[英].NET 4.5.1 Track all Tasks for Cancellation?
5个不相关的类实例执行Task.Run()以启动1-4个“执行任务”的实例。 每个任务都有一个CancellationToken。 有什么很酷或聪明的方法让另一个对象停止所有这些产生的任务而又不触摸/影响它们的产生对象? 如果这是.NET 2.0的日子,我可能会在另一个AppDomain中开始工作,然后杀死该AppDomain以停止子工作或类似的工作。 我还想到,子Task可能会在Timer间隔上检查一个静态类,以查看是否应该停止,但是我想尽可能避免将责任从生成的Task中排除。
如果可能和/或适用,则对每个任务使用相同的CancellationToken
,并仅通过CancellationTokenSource
请求CancellationTokenSource
。 如果每个任务都有其自己的CancellationToken
以支持单个取消,则可以改用以下策略:
CancellationTokenSource
实例,您可以使用该实例向所有任务发出取消请求。 CancellationTokenSource.CreateLinkedTokenSource
开头,它为您提供一个CancellationToken
,一旦任何输入被取消,它就进入取消状态。 这使您可以保留原始的单个取消支持,也可以使用CancellationTokenSource
进行全局取消。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.