我正在使用 2 个不同的过程,比如说 -
Process1.exe : 执行一些操作并更新一个字符串变量,该变量将保存在一个MemoryMappedFile (To acheive IPC) 中,它是文件
Process2.exe:调用Process1。完成“Process1”后,它会尝试打开 MemoryMappedFile文件并获取字符串以供进一步使用。
这是代码片段-
进程1.exe
//Some code
public void DoSomeStuff()
{
onst int MMF_MAX_SIZE = 4096;
const int MMF_VIEW_SIZE = 4096;
try
{
using (MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("file", MMF_MAX_SIZE, MemoryMappedFileAccess.ReadWrite))
{
using (MemoryMappedViewStream stream = mmf.CreateViewStream(0, MMF_VIEW_SIZE))
{
Message message1;
message1.strName = "Some name";
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, message1);
}
}
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}
进程2.exe
const int MMF_VIEW_SIZE = 4096;
using (MemoryMappedFile file = MemoryMappedFile.OpenExisting("file"))
{
using (MemoryMappedViewStream stream = file.CreateViewStream(0, MMF_VIEW_SIZE))
{
BinaryFormatter formatter = new BinaryFormatter();
byte[] buffer = new byte[MMF_VIEW_SIZE];
Message message1;
if (stream.CanRead)
{
stream.Read(buffer, 0, MMF_VIEW_SIZE);
using (MemoryStream ms = new MemoryStream(buffer))
{
ms.Seek(0, SeekOrigin.Begin);
message1 = (Message)formatter.Deserialize(ms);
string name = message1.strName;
}
}
}
}
这是我的 Message 类,它写在两个进程中,
class Message
{
public string strName;
}
问题:完成Process1后,它已成功将字符串数据写入MemoryMappedFile但是当我尝试使用 line在Process2 中打开文件时
MemoryMappedFile 文件 = MemoryMappedFile.OpenExisting("file")
我收到错误 - Specified file not found。
我对MemoryMappedFile实现来实现 IPC非常陌生。有人可以建议我在这里做什么吗?
慕丝7291255
相关分类