2016-06-26 57 views
-1

如何將async方法調用爲實現接口的方法,此方法不是async與Prism使用INavigationAware異步任務

在我的ViewModel中,我有一個async方法,應該在用戶每次瀏覽到視圖時執行。

最快的(壞的)解決方案,我能找到是這個

public class MyViewModel : INavigationAware 
{ 
    //[...] 
    public async void OnNavigatedTo(NavigationContext navigationContext) 
    { 
     await Refresh(); 
    } 
    public async Task Refresh() 
    { 
     await Task.Run(() => 
     { 
      // Asynchronous work 
     }); 
     /* Actions on Gui Thread */   
    } 
    //[...] 
} 
+0

「ContinueWith」的東西到底是什麼?爲什麼不寫'await [異步的東西]; [在UI線程上做些什麼];'? – Haukinger

+0

其實一無所獲。我編輯問題 –

回答

0

這應該對這項工作的基礎上,我可以從問題收集。我做了一個快速測試,我正在研究一個項目來看看這個概念的工作。每次使用此視圖模型導航到視圖時,應運行Refresh方法。

public class MyViewModel : INavigationAware 
{ 
    //[...] 
    public void OnNavigatedTo(NavigationContext navigationContext) 
    { 
     Refresh(); 
    } 
    public async void Refresh() 
    { 
     await Task.Run(() => 
     { 
      // Asynchronous work 
     }).ContinueWith(t=> /* Actions on Gui Thread */, TaskScheduler.FromCurrentSynchronizationContext());    
    } 
    //[...] 
} 

我在OnNavigatedTo取出async/await,只好調用一個asyncRefresh方法不返回任何內容。