Xamarin异步方法澄清主线程

时间:2019-10-17 13:55:44

标签: xamarin.forms async-await

.ConfigureAwait(false)始终使用线程池而不使用UI线程 还是只是一个提示?

这是一个困扰我的问题,而且我还没有明确的答案。

即使您执行.ConfigureAwait(false)阻止主UI线程并调试可怕的

  

跳过100帧!

消息?

1 个答案:

答案 0 :(得分:3)

使用.ConfigureAwait(false)意味着该任务结束时,以下代码将不会重新编组回调用线程,从而节省了一些线程编组,这需要时间。如果未调用.ConfigureAwait(false),则默认值为.ConfigureAwait(true),这表示“完成此任务后,将以下代码编组回调用此任务的线程。

通常,不在视图模型中和/或不需要返回到主线程的每段代码都应使用ConfigureAwait false

这很简单,容易,并且可以通过释放UI线程更长的时间来提高应用程序的性能。

这不仅是问题或性能,而且还涉及避免潜在的僵局。

您可以阅读此document