.ConfigureAwait(false)
始终使用线程池而不使用UI线程
还是只是一个提示?
这是一个困扰我的问题,而且我还没有明确的答案。
即使您执行.ConfigureAwait(false)
阻止主UI线程并调试可怕的
跳过100帧!
消息?
答案 0 :(得分:3)
使用.ConfigureAwait(false)
意味着该任务结束时,以下代码将不会重新编组回调用线程,从而节省了一些线程编组,这需要时间。如果未调用.ConfigureAwait(false)
,则默认值为.ConfigureAwait(true)
,这表示“完成此任务后,将以下代码编组回调用此任务的线程。
通常,不在视图模型中和/或不需要返回到主线程的每段代码都应使用ConfigureAwait
false
。
这很简单,容易,并且可以通过释放UI线程更长的时间来提高应用程序的性能。
这不仅是问题或性能,而且还涉及避免潜在的僵局。
您可以阅读此document