.NET三种异步模式(APM、EAP、TAP)
2021-05-12 15:30
标签:ati 自定义类 cal 结果 write syn manage actor 继承 APM模式: .net 1.0时期就提出的一种异步模式,并且基于IAsyncResult接口实现BeginXXX和EndXXX类似的方法。 .net中有很多类实现了该模式(比如HttpWebRequest),同时我们也可以自定义类来实现APM模式(继承IAsyncResult接口并且实现BeginXXX和EndXXX方法) EAP模式: 基于事件的异步模式是.net 2.0提出的,实现了基于事件的异步模式的类将具有一个或者多个以Async为后缀的方法和对应的Completed事件,并且这些类都支持异步方法的取消、进度报告和报告结果。然而.net中并不是所有的类都支持EAP。 当调用基于事件的EAP模式的类的XXXAsync方法时,就开始了一个异步操作,并且基于事件的EAP模式是基于APM模式之上的,而APM又是建立在委托之上的。下面的Demo就以BackgroundWorker类来演示如何使用EAP异步。 TAP模式: .net 4.0为我们带来了Task的异步,我们有以下三种方法创建Task。 1,Task.Factory.StartNew,比较常用。 2,Task t1 = new Task(() => { Console.WriteLine("t1 start"); }); t1.Start(); 3,Task.Run,是.net 4.5中增加的。 4,Task.FromResult,如果结果是已计算,就可以使用这种方法来创建任务。 .NET三种异步模式(APM、EAP、TAP) 标签:ati 自定义类 cal 结果 write syn manage actor 继承 原文地址:https://www.cnblogs.com/fanfan-90/p/12006157.html 1 ///
1 Funcint, int> func = (i) => i + 1;
2 func.BeginInvoke(5, (asyncResult) => {
3 //Console.WriteLine("call back,param:"+result.AsyncState);
4 int result = func.EndInvoke(asyncResult);
5 Console.WriteLine("result:"+ result);
6 }, null);
1 BackgroundWorker worker = new BackgroundWorker();
2 worker.DoWork += Worker_DoWork;
3 worker.RunWorkerCompleted += Worker_RunWorkerCompleted;
4 worker.RunWorkerAsync(null);
5
6 private static void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
7 {
8 Console.WriteLine("dowork completed");
9 }
10
11 private static void Worker_DoWork(object sender, DoWorkEventArgs e)
12 {
13 Console.WriteLine("dowork");
14 }
1 ///
文章标题:.NET三种异步模式(APM、EAP、TAP)
文章链接:http://soscw.com/index.php/essay/84750.html