繁体   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