C# -- 等待异步操作执行完成的方式

1. 等待异步操作的完成,代码实现

复制代码
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Func<int, int> mySum1 = SumNumbers;
 6             Func<int, int> mySum2 = SumNumbers;
 7             Func<int, int> mySum3 = SumNumbers;
 8 
 9             AsyncCallback callback = c => Console.WriteLine("线程ID:{0},回调函数执行:{1}",Thread.CurrentThread.ManagedThreadId,c.AsyncState);
10 
11 
12             IAsyncResult result1= mySum1.BeginInvoke(10000, callback, "第一个异步");
13             IAsyncResult result2= mySum2.BeginInvoke(10000, callback, "第二个异步");
14             IAsyncResult result3= mySum3.BeginInvoke(10000, callback, "第三个异步");
15 
16 
17             //异步等待方式1:使用EndInvoke
18             int asyc1 = mySum1.EndInvoke(result1);
19             Console.WriteLine("第一个异步已经执行完成,结果:{0}",asyc1);
20 
21             //异步等待方式2:使用AsyncWaitHandle.WaitOne,参数-1表示一直等待到执行完成
22             if (result2.AsyncWaitHandle.WaitOne(-1))
23             {
24                 Console.WriteLine("第二个异步执行完成");
25             }
26 
27             //异步等待方式3:使用IsCompleted判断
28             while (!result3.IsCompleted)
29             {
30                 Console.WriteLine("第三个异步还在执行中....");
31                 Thread.Sleep(300);
32             }
33             Console.WriteLine("第三个异步执行完成");
34 
35             Console.ReadKey();
36         }
37 
38         public static int SumNumbers(int count)
39         {
40             int sum = 0;
41             for (int i = 0; i < count; i++)
42             {
43                 sum += i;
44             }
45 
46             Thread.Sleep(3000);
47             return sum;
48         }
49     }
复制代码

2. 代码执行结果:

 

posted @   编程世界里晃荡  阅读(9091)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示