Xamarin 中的 Task.ConfigureAwait(false) - 安全使用/建议使用?

2024-04-29

经验法则是:如果它不是与 UI 相关的方法,请使用Task.ConfigureAwait(false).

如果我有一个接受接口的 PCL 核心库怎么办IUIAccess。 核心库中的视图模型有一个方法:

public Task ViewModelLoginAsync()
{
  bool success = await loginService.ServiceLoginAsync();
  if(!success)
  {
    uiAccess.ShowInfoDialog("Login failed.");
  }
}

IUIAccess会显示一个UIAlertView在 iOS 上。

我现在的假设是:如果我打电话ViewModelLoginAsync从我的UIViewController我不应该将await 配置为FALSE。这显然是 UI 代码。 然而,调用ServiceLoginAsync可以使用configure wait false。它是否正确? 这只是一个好的实践还是因为性能、内存使用等原因而真正推荐?


首先,我推荐(尽可能)not从虚拟机调用到视图中。我更喜欢使用数据绑定或某种消息总线。

也就是说,你不会使用ConfigureAwait(false) in ViewModelLoginAsync,因为它需要在 UI 上下文上恢复(如果您通过数据绑定而不是显式调用进行更新,这也是如此)。然而ServiceLoginAsync应该使用ConfigureAwait(false)由于我在我的文章中描述的原因MSDN 文章 http://msdn.microsoft.com/en-us/magazine/jj991977.aspx(主要是性能)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xamarin 中的 Task.ConfigureAwait(false) - 安全使用/建议使用? 的相关文章

随机推荐