ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

.NET异步编程模式(一)

2022-08-15 10:34:26  阅读:121  来源: 互联网

标签:异步 TAP int 编程 APM EAP NET public


.NET 提供了三种异步编程模型

  • TAP - task-based asynchronous pattern
  • APM - asynchronous programming model
  • EAP - event-based asynchronous pattern

模型对比

比如有一个同步方法,读取一定数量的数据,存放到给定缓存中,并指定开始偏移量。

public class MyClass  
{  
    public int Read(byte [] buffer, int offset, int count);  
}

TAP

TAP是基于任务的异步模式,使用单一方法来表示异步操作的启动和完成,是在 .NET Framework 4 中引入的。TAP是推荐的异步编程模型。C#中的 asyncawait 以及 Visual Basic 中 Async 和 Await 关键字添加了对 TAP 的语言支持。

public class MyClass  
{  
    public Task<int> ReadAsync(byte [] buffer, int offset, int count);  
}

EAP

EAP 是基于事件的异步模型,在 .NET Framework 2.0 中引入。EAP 需要一个有 Async 后缀方法和一个或多个事件。EAP不再推荐用于新开发

public class MyClass  
{  
    public void ReadAsync(byte [] buffer, int offset, int count);  
    public event ReadCompletedEventHandler ReadCompleted;  
}

APM

APM 使用 IAsyncResult 接口提供异步行为的模型。异步方法需要以 Begin 和 End 开始(比如 BeginWrite 和 EndWrite ).APM不再推荐用于新开发

public class MyClass  
{  
    public IAsyncResult BeginRead(  
        byte [] buffer, int offset, int count,
        AsyncCallback callback, object state);  
    public int EndRead(IAsyncResult asyncResult);  
}

标签:异步,TAP,int,编程,APM,EAP,NET,public
来源: https://www.cnblogs.com/jqwang/p/16587324.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有