bel*_*hin 4 c# task-parallel-library
我们有一个长期运行的操作,包括许多可以取消的点.如果我们要使用任务取消令牌方法,我们需要确保在每个所需位置检查取消.
这对我们来说似乎不是最理想的.我们在这里看到两个问题:
我们应该使用全局取消令牌来处理2.?我们应该AppDomain用来处理1.和2.?
我们需要确保在每个要求的地方检查取消.
这是处理这个问题的正确方法.
全局令牌不能解决每个所需位置的检查问题,并且只能帮助不将令牌作为参数传递给方法.它确实限制了您 - 如果您使用全局令牌,则会剥夺现在或将来修改您的例程以在单独取消时进行多个操作的能力.
但是,我认为传递令牌实际上是一件好事.这使得您的API自我记录 - 每个接受令牌的方法都可能会提升OperationCanceledException并支持取消.
避免这些问题的任何其他方法都需要一个不合作的取消模型.这有不利的副作用,因为强行"杀死"运行操作很少是好事(例如,有很多理由可以避免易于查找的Thread.Abort).
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |