[英]await still blocks current UI thread
我尝试使用以下代码在线程池中运行某些任务:
private async void button1_Click(object sender, EventArgs e)
{
await test().ConfigureAwait(continueOnCapturedContext: false);
}
private Task test()
{
Thread.Sleep(100000);
return null;
}
该代码应该在线程池中运行,但是当前的UI线程仍被阻止。
有人可以帮忙看看吗? 谢谢,
该代码应该在线程池中运行
不,那不是真的。 async
不会在线程池线程上运行您的代码。
我建议您阅读我的async
简介 ,其中介绍了async
功能 ,以及正式的async
FAQ ,专门解决了线程池的误解:
关键字“ async”是否会导致方法的调用排队到ThreadPool? 要创建一个新线程? 要发射火箭飞船?
不,不。
您应该使用Task.Delay方法。
private async void button1_Click(object sender, EventArgs e)
{
await test();
}
private Task test()
{
return Task.Delay(100000);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.