码迷,mamicode.com
首页 > 其他好文 > 详细

异步编程模式

时间:2017-07-29 15:26:19      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:使用   relative   handle   推荐   basic   ogr   https   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);  
}  

异步编程模式

标签:使用   relative   handle   推荐   basic   ogr   https   framework   []   

原文地址:http://www.cnblogs.com/icoolno1/p/7255670.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!