情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

C#でメモリマップドファイルを使用する

.NET Framework 4でSystem.IO.MemoryMappedFiles名前空間に名前付きメモリマップドファイルが追加されます。

簡単な使い方をテストしてみました。

尚、ここではスレッド間通信のために使っていますが、実際はプロセス間通信のために使うことが多いでしょう。

using (MemoryMappedFile memoryMappedFile = MemoryMappedFile.CreateNew("test", 1024))
{
    Thread readerThread = new Thread(() =>
    {
        using (MemoryMappedFile memoryMappedFile2 = MemoryMappedFile.OpenExisting("test"))
        using (MemoryMappedViewAccessor memoryMappedViewAccessor = memoryMappedFile2.CreateViewAccessor())
        {
            while (!memoryMappedViewAccessor.ReadBoolean(100))
                Thread.Sleep(1000);

            Console.WriteLine(memoryMappedViewAccessor.ReadInt32(0).ToString());
        }
    });
    readerThread.Start();

    Thread.Sleep(5000);

    using (MemoryMappedViewAccessor memoryMappedViewAccessor = memoryMappedFile.CreateViewAccessor())
    {
        memoryMappedViewAccessor.Write(0, 12345);

        Thread.Sleep(1000);

        memoryMappedViewAccessor.Write(100, true);
    }
}
pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-C#