2014-01-24 24 views
3

經驗法則說:如果它不是與UI相關的方法,請使用Task.ConfigureAwait(false)Xamarin中的Task.ConfigureAwait(false) - 安全使用/推薦使用?

如果我有一個接受接口IUIAccess的PCL核心庫會怎麼樣。 在覈心庫視圖模型然後有一個方法:

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

IUIAccess將顯示在iOS一個UIAlertView

我的假設現在是:如果我從我的UIViewController呼叫ViewModelLoginAsync我不應該配置爲等待FALSE。它顯然是UI代碼。 但是,調用ServiceLoginAsync可能會使用configure等待false。它是否正確? 由於性能,內存使用等原因,這只是一種好的做法還是真的推薦?

回答

5

首先,我建議(儘可能多)而不是從VM調用進入視圖。我寧願使用數據綁定或某種消息總線。

這就是說,你不會在ViewModelLoginAsync使用ConfigureAwait(false),因爲它需要恢復在UI方面(如果你通過數據綁定,而不是顯式調用的更新,這也是如此)。但是ServiceLoginAsync應該使用ConfigureAwait(false),這是因爲我在MSDN article(主要是性能)中描述的原因。

相關問題