异步编程
.NET 提供了执行异步操作的三种模式:
基于任务的异步模式
Task-based Asynchronous Pattern.简称TAP
该模式使用单一方法表示异步操作的开始和完成。 TAP 是在 .NET Framework 4 中引入的。 这是在 .NET 中进行异步编程的推荐方法。 C# 中的 async 和 await 关键词以及 Visual Basic 中的 Async 和 Await 运算符为 TAP 添加了语言支持。
代码示例:
public class MyClass
{
public Task<int> ReadAsync(byte [] buffer, int offset, int count);
}
基于事件的异步模式
Event-based Asynchronous Pattern.简称EAP
该模式提供异步行为的基于事件的旧模型。 这种模式需要后缀为 Async 的方法,以及一个或多个事件、事件处理程序委托类型和 EventArg 派生类型。 EAP 是在 .NET Framework 2.0 中引入的。
代码示例:
public class MyClass
{
public void ReadAsync(byte [] buffer, int offset, int count);
public event ReadCompletedEventHandler ReadCompleted;
}
异步编程模型
Asynchronous Programming Model.简称APM
也称为 IAsyncResult
模式,这是使用 IAsyncResult
接口提供异步行为的旧模型。 在这种模式下,同步操作需要 Begin
和 End
方法(例如,BeginWrite
和 EndWrite
以实现异步写入操作)
代码示例:
public class MyClass
{
public IAsyncResult BeginRead(byte [] buffer, int offset, int count, AsyncCallback callback, object state);
public int EndRead(IAsyncResult asyncResult);
}