我想在两个进程之间传递一些信息。基本上,它是一些字符串,因为我不想以任何方式限制字符串(我可以通过命令行传递它,因为我产生第二个进程)我想给共享内存一个去。 (命名管道似乎比样品更复杂。)
所以我只是复制/粘贴样本(实际上,样本使用二进制流,我使用文本流)代码并立即使用断点进行同步。
发件人代码
using (System.IO.MemoryMappedFiles.MemoryMappedFile mmf = System.IO.MemoryMappedFiles.MemoryMappedFile.CreateNew("mymappedfile", 10000))
{
using (System.IO.MemoryMappedFiles.MemoryMappedViewStream stream = mmf.CreateViewStream())
{
StreamWriter w = new StreamWriter(stream);
w.WriteLine("Hello!");
w.WriteLine("Andreas!");
w.WriteLine("Teststring #+#\"\" ,,a8&&");
//BinaryWriter writer = new BinaryWriter(stream);
w.Flush();
}
}
接收者代码
using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("mymappedfile"))
{
using (MemoryMappedViewStream stream = mmf.CreateViewStream(1, 0))
{
StreamReader r = new StreamReader(stream);
string str;
while ((str = r.ReadLine()) != null)
{
System.Diagnostics.Debug.WriteLine(str);
}
}
}
输出
ello!
Andreas!
Teststring #+#"" ,,a8&&
有你好的H!丢失。
我应该使用BinaryStreams还是可能会出现问题?
答案 0 :(得分:2)
mmf.CreateViewStream(1/* selects first byte */, 0)
到
mmf.CreateViewStream(0/* selects zeroth byte*/, 0)
这是:http://msdn.microsoft.com/en-us/library/dd267553(v=vs.110).aspx
像这样:
public MemoryMappedViewStream CreateViewStream(
long offset, // you have set it to 1 but should start from 0
long size
)