我正在阅读有关 async/await
关键字的内容,其中提到:
当流程达到 await 标记时,调用线程将被挂起,直到调用完成。
好的,我创建了一个简单的 windows forms 应用程序
,放置了两个标签、一个按钮和一个文本框,并编写了以下代码:
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秒钟里,我可以在文本框中输入文本,所以似乎主线程正在运行。
那么,async/await如何工作呢?
敬礼
async
入门,希望可以帮助你,我试图用简单易懂的方式介绍异步/等待的概念,避免让你感到过于压抑。 - Stephen Cleary