> private void button1_Click(object sender, EventArgs e) > { > label1.Text = "実行中・・・"; > > DoWorkAsync(); > > label1.Text = "完了"; // B > } > } 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 -