首页 > 代码库 > 异步编程模式
异步编程模式
.NET Framework 提供了三种异步操作模式:
异步编程模型(APM) 模式(也叫 IAsyncResult 模式),这些异步操作需要
Begin和
End
方法(例如用于写操作的BeginWrite
和EndWrite
)。这种模式已经不推荐在新项目中使用。更多信息参考: 异步编程模型 (APM)。基于事件的异步模式 (EAP),这种模式的方法带有
Async
后辍,并需要一个或多个事件,事件处理的委托类型以及EventArg
-驱动的类型。EAP 自 .NET Framework 2.0 引入,这种模式已经不推荐在新项目中使用。 更多信息参考:基于事件的异步模式 (EAP).基于任务的异步模式 (TAP),这种模式使用单个方法表示初始化及异步操作的完成. TAP自 .NET Framework 4 引入且是.NET Framework中推荐的异步操作方法。C#中 async 与 await 关键字和VB中 Async 与 Await 操作用于支持 TAP。 更多信息参考: 基于任务的异步模式 (TAP)。
模式比较
通过一个Read方法读取指定数量数据到一个缓冲的指定位置,可以快速的比较这三种异步模式的不同之处:
C#
public class MyClass { public int Read(byte [] buffer, int offset, int count); }
APM 中公开出来相对应的方法是 BeginRead
和 EndRead
方法:
C#
public class MyClass { public IAsyncResult BeginRead( byte [] buffer, int offset, int count, AsyncCallback callback, object state); public int EndRead(IAsyncResult asyncResult); }
EAP 中公开出来相对应的是一组类型与其成员:
C#
public class MyClass { public void ReadAsync(byte [] buffer, int offset, int count); public event ReadCompletedEventHandler ReadCompleted; }
TAP 中公开出来相对应是单个 ReadAsync
方法:
C#
public class MyClass { public Task<int> ReadAsync(byte [] buffer, int offset, int count); }
异步编程模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。