Современные .NET API используют CancellationTokenSource и CancellationToken для отмены заданий по потокам. Есть ли причина использовать их вместо «старого» AutoResetEvent и ManualResetEvent? Я предполагаю, что CancellationToken инкапсулирует что-то похожее, как показано его свойством WaitHandle.CancellationTokenSource или AutoResetEvent
0
A
ответ
4
Ну да. CancellationTokenSource
использует ManualResetEvent
внутренне для обработки отчетов об аннулировании.
Тем не менее, вы должны предпочесть использовать CancellationTokenSource
для отмены вещи в течение нескольких причин:
- Это право на имя. Он отменяет вещи. Это упрощает чтение, поскольку с самого начала ясно, для чего используется экземпляр этого класса.
- Многие из классов, которые являются частью платформы .NET и могут быть отменены, используют
CancellationTokenSource
. Особенно много вещей вSystem.Threading
(и подпакетах) - При использовании
ManualResetEvent
CancellationTokenSource
делает пару вещей, чтобы оптимизировать вещи внутри страны. Ленивая инициализация и такие вещи. I Надеюсь, что делает это немного быстрее и работает с меньшими накладными расходами при некоторых условиях.
+3
'ManualResetEvent' довольно тяжелый, так что это создается только в том случае, если используется «CancellationToken.WaitHandle». –
Смежные вопросы
- 1. CancellationTokenSource misbehavior
- 2. Использование CancellationTokenSource
- 3. Процесс AutoResetEvent?
- 4. Отменяет ли CancellationTokenSource внезапно?
- 5. Уточнение AutoResetEvent
- 6. VB.NET AutoResetEvent
- 7. Awaitable AutoResetEvent
- 8. объект AutoResetEvent, ждет 60 секунд или событие
- 9. ли CancellationTokenSource выключая правильно
- 10. CancellationTokenSource нужен совет
- 11. CancellationTokenSource, Когда распоряжаться?
- 12. ObjectDisposedException: CancellationTokenSource был удален
- 13. CancellationTokenSource отменил более ожидаемый
- 14. CancellationTokenSource vs. volatile boolean
- 15. incrementing autoresetevent C#
- 16. Объекты AutoResetEvent и COM
- 17. C# AutoResetEvent не освобождает
- 18. AutoResetEvent и несколько наборов
- 19. Использование AutoResetEvent несколько раз
- 20. Потребитель/производитель с AutoResetEvent
- 21. Ошибка использования AutoResetEvent
- 22. AutoResetEvent и ждет
- 23. AutoResetEvent огонь перед сигналом
- 24. AutoresetEvent and Singleton issue
- 25. Потребитель-производитель с AutoResetEvent
- 26. AutoResetEvent не работает
- 27. Как объединить TaskCompletionSource и CancellationTokenSource?
- 28. Какие ресурсы потребляет AutoResetEvent/ManualResetEvent?
- 29. AutoResetEvent Set вызывается после таймаута
- 30. CancellationTokenSource Конструктор TimeSpan -1 мс магическое значение?
возможно дубликат [это] (http://stackoverflow.com/questions/13476528/stopping-a-thread-manualresetevent-volatile-boolean-or-cancellationtoken) – ntohl