Могу ли я отменить streamreader.readlineasync с помощью отмены?C#

Место общения программистов C#
Anonymous
Могу ли я отменить streamreader.readlineasync с помощью отмены?

Сообщение Anonymous »

Когда я отменяю свой метод Async с помощью следующего контента, вызывая метод Cancel () моего отмены. Однако после консоли Line.writeline (await reader.readlineasync ()); требуется довольно много, чтобы завершить, я попытался передать свою отмену в readlineasync () также (ожидая, что она вернет пустую строку), чтобы сделать метод более адаптивным к моему Cancel () Call. Однако я не мог перенести chancellationToken readlineAsync () .
Могу ли я отменить вызов на console.writeline () или streamreader.readlineasync () и если так, как это делать? CancellationToken ? Я подумал, что это была бы хорошая практика, чтобы дать асинхронным методам необязательный параметр отмены , даже если метод все еще завершается после отмены.

Код: Выделить всё

StreamReader reader = new StreamReader(dataStream);
while (!reader.EndOfStream)
{
if (ct.IsCancellationRequested){
ct.ThrowIfCancellationRequested();
break;
}
else
{
Console.WriteLine(await reader.ReadLineAsync());
}
}
update :
Как указано в комментариях ниже, Console.WriteLine () один только вызов уже занимал несколько секунд из -за плохо форматированной входной строки 40000 символов на строку. Разрушение этого решает мои проблемы с временем ответа, но я все еще заинтересован в любых предложениях или обходных путях о том, как отменить это долгосрочное утверждение, если по какой-то причине было задумано 40 000 символов в одну строку (например, при сбрасывании всей строки в файл).

Подробнее здесь: https://stackoverflow.com/questions/286 ... ationtoken

Вернуться в «C#»