c# async 和 await 学习

1:下用代码验证下

 1  class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             int sum = 0;
 6             Console.WriteLine("one 当前线程ID" + Thread.CurrentThread.ManagedThreadId+" 时间是"+DateTime.Now+" sum="+ sum);
 7             var ret=Func(sum); 
 8             Console.WriteLine("three 当前线程ID" + Thread.CurrentThread.ManagedThreadId+" 时间是"+DateTime.Now+ " sum=" + sum);
 9             //
10             Console.WriteLine("five 当前线程ID" + Thread.CurrentThread.ManagedThreadId + " 时间是" + DateTime.Now + " sum=" + ret.Result);
11             Console.WriteLine("此步被上一步阻塞着");
12             Console.ReadKey();
13         }
14         public static async Task<int> Func(int sum)
15         {
16             Console.WriteLine("two 当前线程ID" + Thread.CurrentThread.ManagedThreadId + " 时间是" + DateTime.Now + " sum=" + sum);
17             sum=await Task.Run(()=>TimeConsumingMethod(sum)) ;
18             Console.WriteLine("four 当前线程ID" + Thread.CurrentThread.ManagedThreadId + " 时间是" + DateTime.Now + " sum=" + sum);
19             return sum;
20         }
21         private static int  TimeConsumingMethod(int sum)
22         {
23             for (var i = 0; i < 3; i++)
24             {
25                 Thread.Sleep(1000);
26                 sum = sum + i;
27                 Console.WriteLine("当前线程ID" + Thread.CurrentThread.ManagedThreadId + " 时间是" + DateTime.Now + " sum=" + sum);
28             }
29             return sum;
30         }
31     }

 

2:结果

one 当前线程ID1 时间是2019/4/5 22:32:11 sum=0
two 当前线程ID1 时间是2019/4/5 22:32:11 sum=0
three 当前线程ID1 时间是2019/4/5 22:32:11 sum=0
当前线程ID3 时间是2019/4/5 22:32:12 sum=0
当前线程ID3 时间是2019/4/5 22:32:13 sum=1
当前线程ID3 时间是2019/4/5 22:32:14 sum=3
four 当前线程ID3 时间是2019/4/5 22:32:14 sum=3
five 当前线程ID1 时间是2019/4/5 22:32:11 sum=3
此步被上一步阻塞着

3:结论

    1:async 用于修饰方法 单独修饰方法没有任何意义 和普通方法一样

    2:真正的异步还是的靠Task

    3:Task前加了await 的用处 await 之后到方法末尾的代码都属于Task里的线程去执行 。await 之前的代码主线程去执行

   

     

     

   

 

 

 

 

posted on 2019-04-05 22:08  WINSH  阅读(109)  评论(0)    收藏  举报

导航