2013-08-21 2 views
0

페이지 (FolderPage)를 탐색 할 때 호출되는 내 FolderViewModel에 LoadData 메서드가 있습니다. 사용자가 페이지를 입력하고 완료 될 때까지 LoadData 여전히 데이터를 가져 즉시두면대기중인 작업 중단

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

을 (내가 OnNavigatedTo 이벤트 핸들러에 아래에 제시 방법을 기다리고 있습니다). 이 페이지를 종료 할 때 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() 솔루션 수 있지만 그것은 내가 완전히 비동기 패턴을 이해합니까) 모르겠다 어떤 경우 등 ui 스레드에 대한 잠금, 발송자가 필요할 것입니다 그래서 그것은 새로운 스레드를 만듭니다 같아요 – fex

+1

취소 할 수 없습니다. 해독 할 수없는 작업 ('Task.Run'은 해결책이 아닙니다). SQLite가 취소를 지원하지 않으면 명령을 완료로 실행시켜야합니다. –

관련 문제