Просто вызов асинхронных версий методов (ReadAsync) недостаточно, чтобы работа была асинхронной? Нужно обязательно в конструктор передавать параметр? Это актуально для net 8.0?
Если вы не укажите флаг FileOption.Asynchronous, то ReadAsync будет работать как обычная CPU-задача нагружая процессор, т.е. использования именно задач ввода-вывода не будет.
@@RadmirT Получается лучше всегда ходить при чтение/запись на диск асинхронно, кажется такое поведение наоборот должно быть по умолчанию. А для специфических кейсов уже ставить опцию синхронно. Думаю большенство разработчиков не знают этой фишки)
Да, в 99.99% случаев если вы хотите читать файл асинхронно, надо ставить эту опцию. Тут проблема в том, что при создании FileStream никто кроме программиста не знает, как будут читаться данные, синхронно или асинхронно. А читать в синхронном режиме с этим флагом не самая лучшая идея.
Просто вызов асинхронных версий методов (ReadAsync) недостаточно, чтобы работа была асинхронной? Нужно обязательно в конструктор передавать параметр? Это актуально для net 8.0?
Если вы не укажите флаг FileOption.Asynchronous, то ReadAsync будет работать как обычная CPU-задача нагружая процессор, т.е. использования именно задач ввода-вывода не будет.
@@RadmirT Получается лучше всегда ходить при чтение/запись на диск асинхронно, кажется такое поведение наоборот должно быть по умолчанию. А для специфических кейсов уже ставить опцию синхронно. Думаю большенство разработчиков не знают этой фишки)
@@RadmirT или тут есть какие-то подводные камни?
Да, в 99.99% случаев если вы хотите читать файл асинхронно, надо ставить эту опцию. Тут проблема в том, что при создании FileStream никто кроме программиста не знает, как будут читаться данные, синхронно или асинхронно. А читать в синхронном режиме с этим флагом не самая лучшая идея.
Это всех ОС касается? Или только виндовс так работает?
Да, во всех ОС общего пользования (Windows, Linux, MacOS). Возможно только какие-нибудь специализированные ОС могу работать по другому.
@@RadmirT спасибо