Могу ли я отменить StreamReader.ReadLineAsync с помощью CancellationToken?

Когда я отменяю свой асинхронный метод со следующим содержанием, вызываяCancel() метод моегоCancellationTokenSource, это остановится в конце концов. Однако так как линияConsole.WriteLine(await reader.ReadLineAsync()); занимает совсем немного, я попытался передать свой CancellationTokenReadLineAsync() а также (ожидая, что он вернет пустую строку), чтобы сделать метод более отзывчивым на мойCancel() вызов. Однако я не мог пройтиCancellationToken вReadLineAsync().

Могу ли я отменить звонокConsole.WriteLine() или жеStreamreader.ReadLineAsync() и если да, то как мне это сделать?

ПочемуReadLineAsync() не принимаяCancellationToken? Я думал, что это хорошая практика, чтобы дать асинхронным методамCancellationToken параметр, даже если метод все еще завершается после отмены.

StreamReader reader = new StreamReader(dataStream);
while (!reader.EndOfStream)
{
    if (ct.IsCancellationRequested){
        ct.ThrowIfCancellationRequested();
        break;
    }
    else
    {
        Console.WriteLine(await reader.ReadLineAsync());
    }
}

Обновить Как указано в комментариях ниже,Console.WriteLine() один только вызов уже занимал несколько секунд из-за плохо отформатированной входной строки из 40 000 символов в строке. Разрушение этого решает мои проблемы со временем ответа, но я все еще интересуюсь любыми предложениями или обходными путями относительно того, как отменить это долговременное утверждение, если по какой-то причине было записано 40 000 символов в одну строку (например, при выгрузке всей строки в файл).

Ответы на вопрос(1)

Ваш ответ на вопрос