1个按钮,2个textbox,下面这样可以正确异步,窗体也不会死掉,textBox2会先有结果,textBox1再有结果
private async void button1_Click(object sender, EventArgs e)
{Does();
textBox2.Text = "1";
}
private Task<string> DoWork()
{
return Task.Run(() =>
{
Thread.Sleep(4000);
return "Done with work!";
}
);
}
private async void Does()
{
string text = await DoWork();
textBox1.Text = text;
}
如果把按钮事件改成下面这样,窗体不会死,但不会异步执行
private async void button1_Click(object sender, EventArgs e)
{textBox2.Text =await DoWork();
textBox2.Text = "1";
}