■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 = "完了";
を実行できるようになります。
|
|