【发布时间】:2016-03-26 12:23:16
【问题描述】:
有没有办法在两个不同的应用程序之间共享不可序列化的控件对象。
我使用下面的代码在两个应用程序之间共享数据,它工作正常。 我的问题是我需要在这些应用程序之间共享不可序列化的对象。
应用一
using (MemoryMappedFile mmf = MemoryMappedFile.CreateNew("testmap", 10000))
{
bool mutexCreated;
Mutex mutex = new Mutex(true, "testmapmutex", out mutexCreated);
using (MemoryMappedViewStream stream = mmf.CreateViewStream())
{
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(1);
}
mutex.ReleaseMutex();
string path = @"Second Application's path";
//Run second application
Process pr = new Process();
ProcessStartInfo prs = new ProcessStartInfo();
prs.FileName = path;
pr.StartInfo = prs;
bool ret = pr.Start();
mutex.WaitOne();
using (MemoryMappedViewStream stream = mmf.CreateViewStream())
{
BinaryReader reader = new BinaryReader(stream);
MessageBox.Show(String.Format("Process A says: {0}", reader.ReadBoolean()));
MessageBox.Show(String.Format("Process B says: {0}", reader.ReadBoolean()));
}
mutex.ReleaseMutex();
}
申请第二次
try
{
using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("testmap"))
{
Mutex mutex = Mutex.OpenExisting("testmapmutex");
mutex.WaitOne();
using (MemoryMappedViewStream stream = mmf.CreateViewStream(1, 0))
{
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(0);
}
mutex.ReleaseMutex();
}
}
catch (FileNotFoundException)
{
MessageBox.Show("Memory-mapped file does not exist. Run Process A first.");
}
谁能帮我解决一下。
【问题讨论】:
标签: c# shared-memory