CancellationTokenSource

CancellationTokenSource

现代.NET API使用CancellationTokenSource和CancellationToken取消线程之间的作业。是否有任何理由使用这些代替“旧的” AutoResetEvent和ManualResetEvent?我想像CancellationToken封装了类似的东西,正如它的WaitHandle属性所公开的那样。

最佳答案

嗯,是。 CancellationTokenSource在内部使用ManualResetEvent来处理取消事件的报告。

尽管如此,出于以下两个原因,您还是应该更喜欢使用CancellationTokenSource来取消内容:

  • 名称正确。它取消了东西。因为一开始就很清楚此类实例的用途,所以这使阅读起来更加容易。
  • .NET框架中的许多类都可以使用CancellationTokenSource取消,这些类可以取消。 System.Threading(和子包)中的很多东西
  • 在使用ManualResetEvent时,CancellationTokenSource会做一些事情来内部进行优化。延迟初始化之类的东西。我希望这可以使其速度更快一些,并在某些情况下以较少的开销运行。
  • 09-12 03:11