前言
.NET异步编程模式
.NET 提供了执行异步操作的三种模式:
-
基于事件的异步模式 (EAP,是提供异步行为的基于事件的旧模型。 这种模式需要后缀为
Async
的方法,以及一个或多个事件、事件处理程序委托类型和EventArg
派生类型。 EAP 是在 .NET Framework 2.0 中引入的。 建议新开发中不再使用这种模式。 有关详细信息,请参阅基于事件的异步模式 (EAP。 -
Begin 和
End
方法(例如,BeginWrite
和EndWrite
以实现异步写入操作)。 不建议新的开发使用此模式。 有关详细信息,请参阅异步编程模型 (APM。
C#异步有四种实现方式
C# 异步有多种实现方式,可归纳为以下几类:
1、异步方法(Async Method TAP模式)
使用 async/await 关键字实现异步编程,这是比较常用的一种方式。例如:
public async Task TestDoSomeAsync( { await Task.Delay(1000; Console.WriteLine("Async method completed."; }
2、任务并行库(TPL, Task Parallel Library TAP模式)
通过 Task 和 Task<T> 类型实现异步编程,可以利用多核处理器,并发执行多个独立的任务。例如:
Task.Run(( => { Console.WriteLine("Test Task 1 completed."; }; Task.Run(( => { Console.WriteLine("Test Task 2 completed."; }; // 等待所有任务完成 Task.WaitAll(;
3、Asynchronous Programming Model(APM模式)
这是一种比较古老的异步编程方式,需要手动创建回调函数,用于处理完成或错误的通知。例如:
public void DownloadFile(string url { WebClient client = new WebClient(; // 定义异步操作完成后的回调函数 client.DownloadFileCompleted += (sender, e => { Console.WriteLine("Test Download completed."; }; // 开始异步下载 client.DownloadFileAsync(new Uri(url, "file.txt"; }
4、Event-based Asynchronous Pattern(EAP模式)
这是一种已过时的异步编程模式,使用异步事件来实现异步编程。例如:
public class MyClass { public event EventHandler<EventArgs> MyEvent; public void DoSomething( { // 触发异步事件(注意:此处未使用异步操作) MyEvent?.Invoke(this, EventArgs.Empty; } }
参考文章
https://learn.microsoft.com/zh-cn/dotnet/standard/asynchronous-programming-patterns/