我目前有一个应用程序,在这个应用程序中,我创建了一系列任务,这些任务一个接一个地执行,其中有一个取消源,它可以中断任务之间的执行(即在安全终止点)。目前,我只在释放管理类时才使用此取消源,作为一种干净和快速中止执行的方法。
现在我有了一个用例,在这个用例中,我希望创建一个自动超时来取消任务序列,以防操作符没有及时响应(一些任务等待操作员与物理机制的交互)。同时,如果管理类被处理,我仍然需要支持取消。我找到了CancellationTokenSource.CreateLinkedTokenSource,这听起来像是我所需要的,但我有一些顾虑:
我是否走在正确的道路上,还是有更简单的方法来做到这一点?
发布于 2011-06-07 17:21:55
问题中的核心问题似乎与在Dispose()和/或CancellationTokenSource对象上调用CancellationTokenSource有关。在这种情况下,我建议不要调用Dispose,这将大大简化您的设计。
作为理由,我将向您介绍这条线。特别是,Stephen Toub (负责任务的PM )建议您:
如果根据代码的结构进行处理是容易的和正确的,那么要积极地处理。如果您必须开始执行奇怪的循环才能进行释放(或者在任务的情况下,使用额外的同步来确保安全地处理,因为dispose可能只在任务完成后使用),那么最好依靠终结来处理事情。
这听起来就像他在结尾描述的那样--你试图做一些奇怪的旋转,以便调用这些对象上的Dispose()。
https://stackoverflow.com/questions/6269029
复制相似问题