C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 165 を表示中)
■95218 / )  Re[1]: サブルーチンから呼び出すawait/asyncの動きについて
□投稿者/ Hongliang (1054回)-(2020/07/02(Thu) 12:45:22)
>  private  void button1_Click(object sender, EventArgs e)
>  {
>   label1.Text = "実行中・・・";
> 
>   DoWorkAsync();
> 
>   label1.Text = "完了";                 // ③
>  }
> }
DoWorkAsync()の完了を待っていないのですから、直ちに
label1.Text = "完了";
が実行されるのは当然ですよね。

基本的に、async voidになるのはイベントハンドラだけです。
つまり、button1_Clickメソッド以外は、必ずasync Task(返値を返す場合はasync Task<T>)にします。
DoWorkAsyncはasync Task DoWorkAsyncです。

そうすれば、button1_Clickは
await DoWorkAsync();
と記述でき、DoWorkAsyncの完了を待って
label1.Text = "完了";
を実行できるようになります。

返信 編集キー/


管理者用

- Child Tree -