所以我有以下代码
private async void button1_Click(object sender, EventArgs e)
{
await DoSomethingAsync();
MessageBox.Show("Test");
}
private async Task DoSomethingAsync()
{
for (int i = 0; i < 1000000000; i++)
{
int a = 5;
}; // simulate job
MessageBox.Show("DoSomethingAsync is done");
await DoSomething2Async();
}
private async Task DoSomething2Async()
{
for (int i = 0; i < 1000000000; i++)
{
int a = 5;
} // simulate job
MessageBox.Show("DoSomething2Async is done");
}
在显示两个 MessageBox 之前,主线程是阻塞的(我的意思是应用程序本身被冻结)。我的代码显然有问题,我不知道是什么。我以前从未使用过异步/等待。这是我的第一次尝试。
编辑:
实际上我想要做的是开始DoSomethingAsync
异步执行,这样当单击按钮时,MessageBox.Show("Test");
即使 DoSomethingAsync 不完整也会执行。