NET 提供了执行异步操作的三种模式

1.APM模式简介

在.net1.x的版本中就可以使用IAsyncResult接口实现异步操作,但是比较复杂,这种称之为异步编程模型模式 (Asynchronous Programming Model, APM),也称为IAsyncResult模式
在这种APM模式下,一个同步操作XXX需要定义BeginXXX方法和EndXXX方法。
例如,如果有一个同步方法DownloadString,其异步版本就是BeginDownloadString和EndDownloadString方法。
BeginXXX方法接受其同步方法的所有输入参数,EndXXX方法使用同步方法的所有输出参数,并按照同步方法的返回类型来返回结果。
BeginXXX方法返回IAsyncResult接口的引用(内部是AsyncResult对象),用于验证调用是否已经完成,并且一直等到方法的执行结束。
使用异步模式时,BeginXXX方法还定义了一个AsyncCallback参数,用于接受在异步方法执行完成后调用的委托。
这种编程方式比较麻烦,使用很不方便,实际开发中,现在的.net 项目几乎不再使用这种方式实现异步操作(因为有更加方便的方法)。

2. EAP:基于事件的异步编程模式(Event-based Asynchronous Pattern)

是提供基于事件的异步行为的旧模型。 这种模式需要后缀为 Async 的方法,以及一个或多个事件、事件处理程序委托类型和 EventArg 派生类型。 EAP 是在 .NET Framework 2.0 中引入的。 建议新开发中不再使用这种模式。

4.TAP:基于任务的异步编程模式(Task-based Asynchronous Pattern)

该模式使用单一方法表示异步操作的开始和完成。 TAP 是在 .NET Framework 4 中引入的,是在 .NET 中进行异步编程的推荐方法

5. C# 中的 async 和 await 关键词以及 Visual Basic 中的 Async 和 Await 运算符为 TAP 添加了语言支持。是语法糖

TPL(Task Parallel Library)是.Net 4.0 之后带来的新特性

TaskAsync
BGW BackGroundWorker

你可能感兴趣的:(#,多线程系列)