私はasync/await
キーワードについて読んでいて、それを読みました:
ロジックの流れが await トークンに到達すると、呼び出しスレッドは呼び出しが完了するまで中断されます。
さて、私は単純な を作成しwindows forms application
、ボタンとテキストボックスの 2 つのラベルを配置し、コードを書きました。
private async void button1_Click(object sender, EventArgs e)
{
label1.Text = Thread.CurrentThread.ThreadState.ToString();
button1.Text = await DoWork();
label2.Text = Thread.CurrentThread.ThreadState.ToString();
}
private Task<string> DoWork()
{
return Task.Run(() => {
Thread.Sleep(10000);
return "done with work";
});
}
私が理解していないのは、ボタンをクリックすると、label1 にテキストがRunning
表示され、10 秒後にのみ label1 に同じテキストが表示されるということですが、この 10 秒でテキストボックスにテキストを入力できたので、メインスレッドが実行されているようです...
では、async/await はどのように機能するのでしょうか?
よろしく