2013-08-21 39 views
0

我在我的FolderViewModel中有LoadData方法,當頁面(FolderPage)導航到時調用它。 (我在等待着上的OnNavigatedTo事件處理程序下面介紹的方法)正在中止正在等待的任務

public async Task LoadData(Folder folderToLoad) 
{ 
    if (folderToLoad != null) 
    { 
     FolderName = folderToLoad.Name; 
     this.Photographies = await this.dataService.Load(folderToLoad); 
    } 
} 

如果用戶進入頁面,並立即把它LoadData仍然獲取數據,直到它完成。我想在離開此頁面時停止LoadData任務。可能嗎?

+0

這是WPF,ASP.NET,MVC,別的? –

+0

它是WinRT應用程序。 – fex

+1

data.Service.Load是否支持取消? –

回答

3

您想implement cancellation in your task-based asynchronous pattern (TAP) method

通常,這意味着你需要一個CancellationToken並將它傳遞給任何其他採用取消標記的TAP方法。

+0

如何不支持CancellationToken的任務(例如SQLite-net庫)? Task.Run()可能是解決方案,但我想它會創建新線程,所以我將需要鎖,調度程序在某些情況下用戶線程等(我不確定是否完全理解異步模式) – fex

+1

無法取消一個不可撤銷的任務('Task.Run'不是解決方案)。如果SQLite不支持取消,那麼你必須讓命令運行完成。 –