- Приложение Angular 6/7
- .Net Core Веб-API
Код: Выделить всё
this.subscription = this.httpClient.get('api/Controller/LongRunningProcess')
.subscribe((response) =>
{
// Handling response
});
Код: Выделить всё
[HttpGet]
[Route("LongRunningProcess")]
public async Task LongRunningProcess(CancellationToken cancellationToken)
{
try
{
// Dummy long operation
await Task.Factory.StartNew(() =>
{
for (int i = 0; i < 10; i++)
{
// Option 1 (Not working)
if (cancellationToken.IsCancellationRequested)
break;
// Option 2 (Not working)
cancellationToken.ThrowIfCancellationRequested();
Thread.Sleep(6000);
}
}, cancellationToken);
}
catch (OperationCanceledException e)
{
Console.WriteLine($"{nameof(OperationCanceledException)} thrown with message: {e.Message}");
}
return Ok();
}
Код: Выделить всё
// On cancel button's click
this.subscription.unsubscribe();

Но это не приведет к тому, что IsCancellationRequested станет true в методе LongRunningProcess API, поэтому операция продолжится.
[Примечание]: И Вариант 1, и Вариант 2< /strong> в методе API не работают, даже если я звоню с помощью почтальона.
Вопрос: Есть ли способ отменить это < Strong>LongRunningProcess операция метода?
Подробнее здесь: https://stackoverflow.com/questions/577 ... ng-angular
Мобильная версия