簡體   English   中英

使用異步任務取消

[英]Using Cancellation with Async Tasks

有沒有辦法取消Async System.Threading.Tasks.Task?

Task.Factory.FromAsync(
    client.BeginCallWebService, 
    client.EndCallWebService, 
    "param1", 
    null);

我想在此任務中注冊一個共享的CancellationToken,這樣如果在調用此異步任務之前取消該令牌,則不會調用它。

謝謝

所以,考慮到更多的想法,我認為取消Async任務是沒有意義的,因為Begin部分將被調用'inline',就在調用線程上。

因此,無需以這種方式支持取消。

如果您想要實際中止處理調用(例如,到Web服務或使用Web客戶端),您可以實現TaskCompletionSource方法,而不是在此處記錄: http//msdn.microsoft.com/en-us/library/ee622454.aspx

很抱歉回答我自己的問題,我猜這有點不禁。

我不同意取消異步任務毫無意義的觀點。

你是對的,它通常會立即調用(並返回一個熱門任務),但情況並非總是如此,例如當你使用一個使用OrderedTaskScheduler的TaskFactory時(​​一個類一個接一個地執行一個任務)。 OrderedTaskScheduler包含在http://archive.msdn.microsoft.com/ParExtSamples/Release/ProjectReleases.aspx?ReleaseId=4179中

小心,馬丁

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM