现代.NET API使用CancellationTokenSource和CancellationToken来取消跨线程的作业。是否有任何理由使用这些而不是" old" AutoResetEvent和ManualResetEvent?我想,CancellationToken封装了类似的东西,如WaitHandle属性所公开的那样。
答案 0 :(得分:5)
是的。 CancellationTokenSource
在内部使用ManualResetEvent
来处理取消事件的报告。
由于以下几个原因,您仍然希望使用CancellationTokenSource
取消内容:
CancellationTokenSource
。特别是System.Threading
(和子包)ManualResetEvent
时,CancellationTokenSource
会在内部优化一些事情。懒惰的初始化和这样的事情。我希望使它更快一点,并在某些条件下以更少的开销运行。