я наткнулся на следующий вопрос при попытке определить, если я использую Stream
методы, такие как ReadAsync
и CopyToAsync
правильно: C# 4.5 file read performance sync vs asyncasync/ожидание и открытие FileStream?
В этом вопросе я прочитал следующее в принятом ответе:
В частности, ваш тест «асинхронный» не использует асинхронный ввод-вывод; с файлом streams, вы должны явно открыть их как асинхронные, иначе вы просто выполняете синхронные операции в фоновом потоке.
В асинхронном коде IO он использовал следующее, чтобы открыть FileStream
«асинхронно»:
var file = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true)
Так мне было интересно, если вы собираетесь использовать такие методы, как CopyToAsync
следует ли открыть лежащий в основе FileStream
, как показано выше ?, а не делать что-то простое, как следующее:
File.Open(filename, FileMode.Open)
который, как пример я п фактической документации CopyToAsync
демонстрирует открытие основного FileStream
: https://msdn.microsoft.com/en-us/library/hh159084(v=vs.110).aspx
Если это не имеет значения, какой путь открыто, лежащие в основе FileStream
, что делает параметр FileStream
конструктора useAsync
делать?
Так что это не имеет значения для других асинхронных методов ввода-вывода, таких как CopyToAsync? –
Да, вопрос для других асинхронных методов ввода-вывода, таких как CopyToAsync. но, к сожалению, высказывание MSDN не имеет значения. –