Отмена кооперативная.Отмена операции "uncancelable" очень неудобна.
Если CallApi
занимает CancellationToken
, то вы можете просто сконструировать одну из них, используя CancellationTokenSource
, которая отменяется через определенное время.
ЕслиCallApi
не принимает CancellationToken
, но работает на каком-то объекте HANDLE
, тогда вы можете попробовать отменить, закрыв базовый HANDLE
.Это распространенный (но не универсальный) способ отмены операций, которые иначе не могут быть отменены.
В противном случае CallApi
- это не подлежащая отмене операция, что означает, что вы смотрите на какой-то неуклюжий код.
Самый надежный способ отменить не подлежащую отмене операцию - поместить код в отдельный процесс и завершить этот процесс при отмене.
Однако, поскольку вы уже находитесь в ASP.NET, вы также можетепосмотрите на размещение кода в отдельном домене или потоке приложений и выгрузку домена приложений / завершение потока при отмене.Со временем это приведет к нестабильности процесса, но ASP.NET будет периодически перезапускать ваш процесс, поэтому он должен (в конце концов) восстановиться.