コードはこんな感じ。
private void button1_Click(object sender, EventArgs e)
{
//using System.IO.MemoryMappedFiles;
MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("TestMMF", 1024);
using (MemoryMappedViewAccessor mmfa = mmf.CreateViewAccessor())
{
var data = "1192つくろう鎌倉幕府! " + DateTime.Now.ToString();
var byteData = Encoding.UTF8.GetBytes(data);
mmfa.WriteArray(0, byteData, 0, byteData.Length);
mmfa.Flush();
}
}
private void button2_Click(object sender, EventArgs e)
{
MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("TestMMF", 1024);
using (MemoryMappedViewAccessor mmfa = mmf.CreateViewAccessor())
{
var buf = new byte[1024];
mmfa.ReadArray(0, buf, 0, buf.Length);
int len = 0;
for (len = 0; len < buf.Length; len++)
{
if (buf[len] == 0x00)
{
break;
}
}
var str = Encoding.UTF8.GetString(buf, 0, len);
MessageBox.Show("結果=[" + str + "]");
}
}
{
//using System.IO.MemoryMappedFiles;
MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("TestMMF", 1024);
using (MemoryMappedViewAccessor mmfa = mmf.CreateViewAccessor())
{
var data = "1192つくろう鎌倉幕府! " + DateTime.Now.ToString();
var byteData = Encoding.UTF8.GetBytes(data);
mmfa.WriteArray(0, byteData, 0, byteData.Length);
mmfa.Flush();
}
}
private void button2_Click(object sender, EventArgs e)
{
MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("TestMMF", 1024);
using (MemoryMappedViewAccessor mmfa = mmf.CreateViewAccessor())
{
var buf = new byte[1024];
mmfa.ReadArray(0, buf, 0, buf.Length);
int len = 0;
for (len = 0; len < buf.Length; len++)
{
if (buf[len] == 0x00)
{
break;
}
}
var str = Encoding.UTF8.GetString(buf, 0, len);
MessageBox.Show("結果=[" + str + "]");
}
}
結果、プロセス間で情報を共有できました。
しかし、System.IOとの連携というか、私が見つけられなかっただけなのかもしれませんが、Stream系のクラスとうまく連携できないようです。
そのあたり今度調査してみよう。
0 件のコメント:
コメントを投稿