Мне нужно открыть один файл в двух разных экземплярах процесса.Два способа открыть файл (оба в каждом процессе) таковы:
m_Stream = new FileStream(name, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite,4*1024,FileOptions.WriteThrough);
и
[DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern SafeFileHandle CreateFile(
string fileName,
[MarshalAs(UnmanagedType.U4)] FileAccess fileAccess,
[MarshalAs(UnmanagedType.U4)] FileShare fileShare,
IntPtr securityAttributes,
[MarshalAs(UnmanagedType.U4)] FileMode creationDisposition,
int flags,
IntPtr template);
m_Stream = new FileStream( //no buffering
CreateFile(name, FileAccess.ReadWrite, FileShare.ReadWrite, IntPtr.Zero, FileMode.Open, 0x20000000, IntPtr.Zero),
FileAccess.ReadWrite);
Теперь я понимаю, что это очень специализированный сценарий с обоимивызов взаимодействия и FileOptions.WriteThrough.Однако FileShare.ReadWrite, похоже, не работает.Второй процесс (с использованием того же кода), который пытается получить доступ к файлу, обычно получает другой процесс, который обращается к этому исключению файла.В рамках того же процесса, кажется, хорошо работает для обмена.Есть мысли?