【发布时间】:2015-05-04 07:41:01
【问题描述】:
使用CancellationTokenSource 而非volatile 布尔字段来指示Task 完成有什么好处吗?
【问题讨论】:
-
A
CancellationToken并不是要通知线程完成,而是要告诉Task取消它的操作。如果您希望Task返回,只需使用return语句。 -
由于有大量标准 C# 线程类(包括 Task)在其接口中使用
CancellationTokenSource,因此您应该使用它。 -
@YuvalItzchakov 如果我没记错的话,我仍然需要在使用 CancelationTokeSource 时处理我的任务完成方式(即返回或中断)
-
CancellationToken是将Task转换为Canceled状态的唯一方法。返回bool会将其转换为Completed状态 -
@YuvalItzchakov 好吧,你可以
throw TaskCanceledException导致这种情况发生 - 但这样做有点奇怪,因为异常不会包含有意义的CancellationToken。
标签: c# task volatile cancellationtokensource