我尝试使用以下代码在线程池中运行一些任务:
private async void button1_Click(object sender, EventArgs e)
{
await test().ConfigureAwait(continueOnCapturedContext: false);
}
private Task test()
{
Thread.Sleep(100000);
return null;
}
代码应该在线程池中运行,但当前的UI线程仍然被阻止。
所以有人可以帮忙看看吗? 感谢,
答案 0 :(得分:3)
代码应该在线程池中运行
不,这根本不是真的。 async
不会在线程池线程上运行您的代码。
我建议你阅读我的async
intro,其中解释了async
做做了什么,以及official async
FAQ,它具体解决了线程池误解:
“async”关键字是否导致调用方法排队到ThreadPool?要创建新线程?发射火箭飞往火星?
没有。不,不。
答案 1 :(得分:1)
您应该使用Task.Delay方法。
private async void button1_Click(object sender, EventArgs e)
{
await test();
}
private Task test()
{
return Task.Delay(100000);
}