Mi objetivo es escribir y leer el mismo archivo al mismo tiempo. No puedo entender por qué File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read) falla porque está siendo utilizado por otro proceso . El archivo es creado por mi código y no configuré ningún atributo especial. Probado en las aplicaciones de consola .net framework 4.8 y .net6 .
static void Main(string[] args) { const string fileName = "TestFile.txt"; try { FileStream ws = File.Open(fileName, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read); Console.WriteLine("ws ok"); } catch (Exception ex) { Console.WriteLine($"ws {ex.Message}"); } try { FileStream rs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); Console.WriteLine("rs ok"); } catch (Exception ex) { Console.WriteLine($"rs {ex.Message}"); //rs The process cannot access the file 'debugpath\TestFile.txt' because it is being used by another process. } //stream close omited Console.ReadKey(); } He leído los documentos FileShare Enum pero no puedo encontrar ningún motivo. ¿ FileShare.Read no significa compartir el archivo o transmitir con otros (subprocesos, procesos) para leer?
¿Alguien podría explicar el motivo y dar la forma correcta de leer el archivo?