FileStream.BeginRead / BeginWrite реализации являются асинхронными, но их использование перекрывающегося ввода-вывода не выполняется потокобезопасным способом.
Вы можете видеть, что BeginRead / BeginWrite не принимает чтение / записьположение файла в качестве параметра, поэтому операции с другими потоками (например, Seek) могут привести к неправильному расположению файла для чтения / записи.
Если вы все еще не уверены, в реализации Microsoft FileStream явно указывается "Это не потокобезопасно. "в комментарии внутри BeginReadCore & BeginWriteCore .
Итог: если вам нужен перекрывающийся ввод-вывод, ориентированный на многопотоковый режим, вам придется использовать P /Вызвать с помощью ReadFile / WriteFile.