取消在Dispose上运行任务()

时间:2017-12-12 11:06:24

标签: c# .net asynchronous

我有一个带有几个Async方法的类接受CancellationToken并返回Task - 其中一些任务可能会永远运行。

我处理非托管对象时也需要Dispose()方法,但我不确定如何正确实现Dispose()

显然我无法Dispose()让任务继续在后台运行,但我无法阻止Dispose()直到它们完成,因为它们可能永远无法完成共

我看到的唯一选择是从给定的CancellationTokenSource创建链接的CancellationToken,然后在Dispose()上创建,以取消任何未完成的任务。

然而,这感觉不自然,因为我认为消费者被CancellationToken取消了 - 最终不是消费者应该负责的事情?

我是否遗漏了一些东西,是否有一种更自然的方式来表达这一点,我是否过度思考这个问题?

0 个答案:

没有答案