C# 5.0 async void vs async Task

 1  private void button1_Click(object sender, EventArgs e)
 2         {
 3             TestReturnsVoid();//会在UI Thread抛出异常,导致程序崩溃
 4         }
 5 
 6         private void button2_Click(object sender, EventArgs e)
 7         {
 8             TestReturnsTask();//会在另外一个线程抛出异常,类似TheadPool的效果
 9         }
10 
11         private async void TestReturnsVoid()
12         {
13             await Test();
14         }
15 
16         private async Task TestReturnsTask()
17         {
18             await Test();
19         }
20 
21         private async Task Test()
22         {
23             throw new NotImplementedException();
24         }

结论
1. async void 仅仅推荐用在UI event handler
2.总是处理事件 : TaskScheduler.UnobservedTaskException

猜你喜欢

转载自www.cnblogs.com/0xMe/p/11982974.html