AsyncUI 및 WinRT XAML Toolkit 라이브러리의 기다릴 수있는 확장 메서드에 취소 지원을 추가하고자합니다. 기본 Task 클래스에는 기본 제공 Cancel() 메서드 또는 이벤트가 없으며 내 작업에서 주기적으로 확인해야하는 취소 토큰을 사용합니다. UI 태스크 시나리오에서는 TaskCompletionSource를 사용하여 태스크를 생성 했으므로 스레드 풀 스레드에서 루프를 실행하고 토큰을 확인하는 대신 이벤트에 응답하여 UI 스레드에서 태스크를 취소하고 싶습니다. .비동기 UI 작업에 취소 지원을 추가하는 방법은 무엇입니까?
스토리 보드 완료 또는 버튼 클릭과 같은 작업이 현재 완료되어 있으므로 취소 작업을 지원하려면 이벤트 취소 및 다른 중지 작업을 수행하여 취소 요청에 응답해야합니다. 애니메이션.
저는 TaskCompletionSource 대신 CancellableUITask 일종의 클래스를 만들려고합니다. 그래서 내 작업의 소비자가 호출 할 수있는 Cancel() 메서드를 노출 할 수 있습니다 (예 : 버튼에 대한 응답으로 기다려온 애니메이션을 중지하려면) click) 및 스토리 보드 작업이 정리를 수행하도록 재정의 할 수있는 가상 OnCancellationRequested() 메소드와 같은 것입니다.
의미가 있습니까? 내가 여기서 묘사 한 것을 성취하는 최선의 방법은 무엇인가?
:
그래서 당신의 코드를 다음과 같이 보일 수 있습니다. 폴링을 피하기 위해'CancellationToken' (아마도''Register()'] (http://msdn.microsoft.com/en-us/library/system.threading.cancellationtoken.register)을 사용하는 것보다 당신의 솔루션이 더 나은 방법은 없을 것입니다) 및 ['TaskCompletionSource.SetCanceled()'] (http://msdn.microsoft.com/en-us/library/dd449188)? – svick
글쎄, 나는 등록 방법을 몰랐다. 그래서 나는 묻고있다. :) –