我有一个带有几个Async方法的类接受CancellationToken
并返回Task
- 其中一些任务可能会永远运行。
我处理非托管对象时也需要Dispose()
方法,但我不确定如何正确实现Dispose()
。
显然我无法Dispose()
让任务继续在后台运行,但我无法阻止Dispose()
直到它们完成,因为它们可能永远无法完成共
我看到的唯一选择是从给定的CancellationTokenSource
创建链接的CancellationToken
,然后在Dispose()
上创建,以取消任何未完成的任务。
然而,这感觉不自然,因为我认为消费者被CancellationToken
取消了 - 最终不是消费者应该负责的事情?
我是否遗漏了一些东西,是否有一种更自然的方式来表达这一点,我是否过度思考这个问题?