我正在阅读有关async/await
关键字的内容,并且已经阅读过:
当逻辑流到达等待令牌时,调用线程将暂停,直到调用完成。
好吧,我创建了一个简单的windows forms application
,放置了两个标签,一个按钮和一个文本框,然后我编写了代码:
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 秒后才会有相同的文本,但是在这 10 秒内我能够在我的文本框中输入文本,所以似乎主线程正在运行...
那么,异步/等待是如何工作的呢?
问候