美文网首页
记一次Task和WCF的特别情况

记一次Task和WCF的特别情况

作者: Imjeef | 来源:发表于2019-09-29 14:07 被阅读0次

Task

.NET中异步编程的Task对象。
在.NET4中,Task任务结束,如果内部产生了异常 ,当GC回收Task时,会抛出AggregateException的异常。
发现这个错误在Win10系统不会产生,而在Win7系统中则会抛出异常,Win7 .NET的版本是4.0

产生这个不同原因是4.5以及后续的版本为了更好的优化异步编程。更改了Task异常默认处理行为。
Task在4.5之后Task内部异常不会抛出,而是作为Task的Result返回。

所以在.NET4.0使用需要注意手工处理异常

方法一:

Task.Factory.StartNew(()=>{
  try{
    //异步执行逻辑
  }catch(Exception ex){
    //对异常进行处理
  }
});

方法二:

var taskResult = Task.Factory.StartNew(()=>{
  //异步执行逻辑
});
try{
  task.Wait();
}catch(Exception ex){
  //对异常进行处理
}

方法三:
重写任务计划的UnobservedTaskException事件,将引发的异常设置为“已观察到”

TaskScheduler.UnobservedTaskException+=(sender, unobservedTaskExceptionEventArgs)=>{
  //设置为已观测到异常,阻止默认的一行处理行为
  unobservedTaskExceptionEventArgs.SetObserved();
};

WCF

WCF中双工通信的疑问,在双工通信的模型中,如果频繁调用的情况下,会导致客户端阻塞。
换成同步调用则没发现这个问题

WCF服务实现都是同样的每次设置Callback,多线程模式

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple)]

相关文章

  • 记一次Task和WCF的特别情况

    Task .NET中异步编程的Task对象。在.NET4中,Task任务结束,如果内部产生了异常 ,当GC回收Ta...

  • WCF

    wcf精通系列 无废话WCF系列教程 Windows Communication Foundation(WCF)是...

  • WCF简单例子+Asp.Net MVC调用+WinForm调用

    1.创建WCF服务项目: 阐述:WCF服务库与WCF服务应用程序的区别。 WCF服务库,可以认为是一个包含WCF服...

  • WCF学习目录

    WCF 基本 WCF概念 WCF配置文件详解 多个不同类对象传输思路 WCF 大文件传输配置 Uri ? & = ...

  • 1.WCF 简介

    WCF是什么技术? WCF(Windows Communication Foundation) - Windows...

  • 20160327

    https://github.com/cyjcyjcyj/task1-7 很失败的一次task 360和chrom...

  • WCF服务使用ProtoBuf传输

    ProtoBuf的优缺点不再叙说,本篇主要介绍是WCF服务端和WCF客户端通过ProtoBuf传输数据的例子。 1...

  • Gradle Task编写

    Task基本语法 执行task 执行多个task 每个task只会执行一次,所以 gradle test test...

  • Android-taskAffinity

    一、简介 哪些情况下开启一个 Activity 会在新的 task 运行,哪些情况下会继续在原来的task 运行。...

  • 查看task栈情况

    【AndroidStudio 查看task栈情况】 我们都知道,每个Activity都有taskAffinity属...

网友评论

      本文标题:记一次Task和WCF的特别情况

      本文链接:https://www.haomeiwen.com/subject/yoefpctx.html