繁体   English   中英

等待仍然阻止当前的UI线程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM