.NET Framework Windowsフォームアプリケーションにて、async/awaitで非同期の処理のテストプログラムを作成いたしました。
awaitの説明を読んで、非同期の処理を別スレッドで行い、完了したら元のスレッドに戻すと解釈したのですが、以下のGetintValueの中で止めて見てみると、元のメインスレッドで行われていました。
Task.Runのようにワーカースレッドで動くかと思っていたのですが、async/awaitの処理に対する解釈が間違っているでしょうか。
C#
1 int a; 2 private async void button_Click(object sender, EventArgs e) 3 { 4 while (true) 5 { 6 this.progressBar1.Value = await GetintValue(); 7 await Task.Run(() => 8 { 9 System.Threading.Thread.Sleep(1000); 10 }); 11 12 if (a >= 99) { a = 0; } 13 } 14 } 15 private async Task<int> GetintValue() 16 { 17 a++; 18 await Task.Delay(100); 19 return a; 20 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/06 02:38
2018/03/06 03:07
2018/03/06 03:10
2018/03/06 03:24
2018/03/06 04:31