備忘録

備忘録

C#で共有メモリを利用する方法

Ⅰ. はじめに

タイトルの通り「C#で共有メモリを利用する方法」です。

以下記事の方法でC++でも同じメモリ空間を利用できます。
https://kagasu.hatenablog.com/entry/2017/05/03/003922

Ⅱ. やり方

1. サンプルプログラムを書く
using System.IO.MemoryMappedFiles;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct Data
{
  public int Value;
}

class Program
{
  static void Main(string[] args)
  {
    using var memoryMappedFile = MemoryMappedFile.CreateOrOpen("test001", (uint)Marshal.SizeOf(typeof(Data)));
    using var accessor = memoryMappedFile.CreateViewAccessor();
    var data = new Data();

    // 書き込む
    data.Value = 100;
    accessor.Write(0, ref data);

    // 読み込む
    accessor.Read(0, out data);
  }
}

実行結果

省略