MemoryMappedFile не работает с 2 процессами?
Я сделал простой тест сMemoryMappedFile
какMSDN говорит:
2 процесса, 1 файл отображения памяти:
первый процесс добавляет строку «1»первый процесс ждетвторой процесс добавляет строку «2» и завершаетсяпервый процесс теперь читает весь отображенный файл памятипроцесс А:using (MemoryMappedFile mmf = MemoryMappedFile.CreateNew("testmap", 10000))
{
bool mutexCreated;
Mutex mutex = new Mutex(true, "testmapmutex", out mutexCreated);
using (MemoryMappedViewStream stream = mmf.CreateViewStream())
{
BinaryWriter writer = new BinaryWriter(stream, Encoding.UTF8);
writer.Write("1");
}
mutex.ReleaseMutex();
Console.WriteLine("Start Process B and press ENTER to continue.");
Console.ReadLine();
mutex.WaitOne();
using (MemoryMappedViewStream stream = mmf.CreateViewStream())
{
BinaryReader reader = new BinaryReader(stream, Encoding.UTF8);
Console.WriteLine("Process A says: {0}", reader.ReadString());
Console.WriteLine("Process B says: {0}", reader.ReadString());
}
mutex.ReleaseMutex();
}
процесс Б: using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("testmap"))
{
Mutex mutex = Mutex.OpenExisting("testmapmutex");
mutex.WaitOne();
using (MemoryMappedViewStream stream = mmf.CreateViewStream(1, 0))
{
BinaryWriter writer = new BinaryWriter(stream, Encoding.UTF8);
writer.Write("2");
}
mutex.ReleaseMutex();
}
Результат:
Ху?
Где "1", "2"?
Однако, если я бегуТОЛЬКО Первый процесс (без активации процесса B) я получаю:
Что мне не хватает?
Я ожидаю увидеть:
Process A says: 1
Process B says: 2