我正在考慮在AsyncUI和WinRT XAML Toolkit庫中爲等待擴展方法添加取消支持。看起來基本的Task類沒有內置的Cancel()方法或事件,並且依賴於取消標記,我的任務需要定期檢查。我認爲在我的UI場景中沒有任何意義,因爲我的任務是使用TaskCompletionSource生成的,我想取消UI線程上的任務以響應事件,而不是在線程池線程上運行循環,並檢查令牌。如何向異步UI任務添加取消支持?
當UI事件發生時,我的任務目前已完成 - 如故事板完成或單擊按鈕,所以如果我想支持取消 - 我需要通過取消訂閱事件和執行其他清理來響應取消請求動畫。
我想創建某種CancellableUITask基類而不是使用TaskCompletionSource,所以我可以公開一個我的任務的使用者可以調用的Cancel()方法(例如,爲了響應按鈕而停止等待的動畫點擊)以及類似虛擬OnCancellationRequested()方法的東西,我的故事板等待者任務可以覆蓋以執行清理。
它有道理嗎?完成我在這裏描述的內容的最佳方法是什麼?
我不明白。您的解決方案如何比使用'CancellationToken'(可能使用['Register()'](http://msdn.microsoft.com/en-us/library/system.threading.cancellationtoken.register)'來避免輪詢)和['TaskCompletionSource.SetCanceled()'](http://msdn.microsoft.com/zh-cn/library/dd449188)? – svick
那麼,我不知道註冊方法,這就是爲什麼我問。 :) –