Я пытаюсь закодировать простую асинхронную запись с тайм-аутом, как показано ниже, и ожидаю, что функция вызовет TaskCanceledException, учитывая очень большой буфер и малое время ожидания. Однако этого не происходит. WriteAsync будет блокироваться на много секунд до завершения записи. Что мне не хватает?
public async void WriteWithTimeout(Stream os, byte[] buf, int waitMs)
{
CancellationTokenSource tokenSource = new CancellationTokenSource(waitMs); // cancel after waitMs milliseconds.
await os.WriteAsync(buf, 0, buf.Length, tokenSource.Token);
return;
}
Вызов из потока графического интерфейса:
try
{
WriteWithTimeout(response.OutputStream, buf100M, w1ms);
}
catch(OperationCanceledException e)
{
ConsoleWriteLine("Failed with exception: {0}", e.Message);
}
tokenSource.CancelAfter(TimeSpan.FromMilliseconds(waitMs));
ПОСЛЕWriteAsync
, а потом ждать? например этот ответ здесь: stackoverflow.com / questions / 23476576 / - person zaitsman   schedule 13.12.2017