C#异步有多少种实现方式

科技资讯 投稿 6900 0 评论

C#异步有多少种实现方式

前言

.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/

 

 

 

编程笔记 » C#异步有多少种实现方式

赞同 (39) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽