码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2018-12-24 16:36:34      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:回调函数   img   函数   +=   end   thread   man   bsp   class   

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. 代码执行结果:

技术分享图片

 

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

标签:回调函数   img   函数   +=   end   thread   man   bsp   class   

原文地址:https://www.cnblogs.com/kliine/p/10168334.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!