Будет ли StreamWriter блокироваться, зависит от того, в какой поток он записывает свои данные.Если вы посмотрите на исходный код StreamWriter , вы увидите, что запись только добавит данные в свой внутренний буфер и сбросит их в поток, когда этот буфер заполнен.
Потокскопирует данные в свой внутренний буфер, а когда он заполнится, он будет сброшен.Сброс выполнит фактическое сохранение.
Если Stream является MemoryStream, тогда Flush не будет стоить дорого, но если он записывает в файл, это может занять некоторое время.
В общем, вы видите все задействованные буферы.Разработчики концепции Stream и StreamWriter уже думали об улучшении времени отклика до того, как было изобретено async-await.
Вероятно, драйвер устройства, который должен был выполнять фактическую запись, также имеет некоторый механизм буферизации, чтобы предотвратить ожидание авторов.для фактической записи данных на жесткий диск.
Теоретически вы выиграете время обработки, если ваш StreamWriter заполнен, и сбрасывает данные в заполненный поток и сбрасывает данные в буфер диска, которыйзаполнен и должен ждать, пока данные фактически не будут записаны.Однако я сомневаюсь, что это происходит довольно часто.