В настоящее время я создаю асинхронную версию существующего API, и я изо всех сил пытаюсь найти какие-либо рекомендации о том, когда рекомендуется поддерживать отмену. Некоторые асинхронные методы в BCL не имеют перегрузки, которая принимает CancellationToken
, и я нашел это Статья MSDN, в которой говорится
необязательно, чтобы все асинхронные методы поддерживали отмену
Итак, при каких условиях стоит поддерживать отмену через CancellationToken
?
Я склоняюсь к следующим условиям:
- Любой вызываемый ожидаемый метод также поддерживает отмену
- Выполнение любого ожидаемого метода может занять больше времени, чем n мс.
- Реализация метода имеет одну или несколько логических точек выхода (например, отсутствие побочных эффектов от досрочного выхода)
Это разумные условия? есть другие?