#async-await #cancellationtokensource
#асинхронное ожидание #cancellationtokensource
Вопрос:
У меня есть такой цикл внутри блока try-catch:
try
{
while ((receivedBytesCount = await tcpClient.GetStream().ReadAsync(rxBytes, 0, rxBytes.Length, tcpCancellationSource.Token)) != 0)
{
// handling rxBytes[]
}
}
catch (OperationCanceledException oce)
{
Console.WriteLine($"Shutting down TCP thread...");
}
catch (Exception e)
{
// handle other exceptions
}
Когда я запрашиваю отмену tcpCancellationSource
откуда-то:
tcpCancellationSource.Cancel();
мое приложение выдает исключение OperationCanceledException, но не из блока try-catch .
Как я должен правильно обработать эту отмену?
Комментарии:
1. Вы хотите сказать, что ваш
catch (OperationCanceledException oce)
не попадает под удар?2. @JohanP Да. Он не попадает.
3. Возможно, вы используете
tcpCancellationSource
какой-то другой асинхронный код, который выдает исключение?4. @JohanP Возможно, это так, но я изменил слишком много вещей, и теперь я не знаю, что помогло.