File.CreateFile через StreamWriter вызывает конструктор FileStream, передавая FileMode.Create, FileAccess.Write и FileShare.Read. Это очень нормальный способ создания файлов, доступа к ним и обмена ими. Вам определенно понадобится доступ на запись, поскольку вы только что создали файл. И для других процессов вполне нормально читать файл, пока вы его пишете, ничего плохого не происходит, когда они это делают.
То, о чем вы просите, возможно, но вы не можете использовать File.CreateFile (). Сначала вам нужно создать FileStream (Create, Write и FileShared.ReadWrite) и передать его конструктору StreamWriter. Теперь файл может быть записан как вами, так и другим процессом.
Что довольно сложно, предположим, что вы и какой-то другой процесс одновременно записываете в файл. Это в порядке очереди, в конечном итоге файл будет содержать выходные данные вашей программы, случайным образом смешанные с выходными данными другого процесса. Маловероятно, что файл будет доступен для чтения после этого.
Возможно, вы хотите сделать что-то вроде намеренного отказа от записи в файл самостоятельно, чтобы этого не произошло. Это очень необычно, но можно заставить работать. Тогда более серьезной проблемой будет то, что этот другой процесс обнаружит, что файл вообще существует. Вероятно, все будет работать лучше, если вы просто оставите создание файла другому процессу.
person
Hans Passant
schedule
03.02.2010