现代.NET API使用CancellationTokenSource和CancellationToken取消线程之间的作业。是否有任何理由使用这些代替“旧的” AutoResetEvent和ManualResetEvent?我想像CancellationToken封装了类似的东西,正如它的WaitHandle属性所公开的那样。
最佳答案
嗯,是。 CancellationTokenSource
在内部使用ManualResetEvent
来处理取消事件的报告。
尽管如此,出于以下两个原因,您还是应该更喜欢使用CancellationTokenSource
来取消内容:
CancellationTokenSource
取消,这些类可以取消。 System.Threading
(和子包)中的很多东西ManualResetEvent
时,CancellationTokenSource
会做一些事情来内部进行优化。延迟初始化之类的东西。我希望这可以使其速度更快一些,并在某些情况下以较少的开销运行。