有没有办法取消Async System.Threading.Tasks.Task?即。
Task.Factory.FromAsync(
client.BeginCallWebService,
client.EndCallWebService,
"param1",
null);
我想在此任务中注册一个共享的CancellationToken,这样如果在调用此异步任务之前取消该令牌,则不会调用它。
由于
答案 0 :(得分:2)
所以,考虑到更多的想法,我认为取消Async任务是没有意义的,因为Begin部分将被调用'inline',就在调用线程上。
因此无需以这种方式支持取消。
如果您想要实际中止处理调用(例如,中断Web服务或使用Web客户端),您可以实现TaskCompletionSource方法,而不是在此处记录:http://msdn.microsoft.com/en-us/library/ee622454.aspx
很抱歉回答我自己的问题,我猜这有点不禁。
答案 1 :(得分:0)
我不同意取消异步任务毫无意义的概念。
你是对的,它通常会立即调用(并返回一个热门任务),但情况并非总是如此,例如当你使用一个使用OrderedTaskScheduler的TaskFactory时(一个类执行一个又一个任务) )。 OrderedTaskScheduler包含在http://archive.msdn.microsoft.com/ParExtSamples/Release/ProjectReleases.aspx?ReleaseId=4179
中保重, 马丁