内存共享实现进程间通信及文件的并发访问,该怎么处理
内存共享实现进程间通信及文件的并发访问
如何使用MemoryMappedFile实现一个进程多线程写一个XML文件,另一个进程多线程读此XML文件。
通过创建CreateViewStream,一直提示少根元素:
Student stu = new Student()
{
Age = 10,
Class = "一般qw",
Name = "Tom",
Number = 1,
mac="goodbyte"
};
using (var memoryFile = MemoryMappedFile.CreateFromFile("c:\\x.xml", FileMode.Open, "substationfile", 100*1024, MemoryMappedFileAccess.ReadWrite))
{
using (var mmf = MemoryMappedFile.OpenExisting("substationfile"))
{
using (var ms = mmf.CreateViewStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(Student));
serializer.Serialize(ms, stu);
var xmlClass = new XmlDocument();
xmlClass.Load(ms);// 出错少根元素
}
}
}
------解决思路----------------------
没创建根元素?
如何使用MemoryMappedFile实现一个进程多线程写一个XML文件,另一个进程多线程读此XML文件。
通过创建CreateViewStream,一直提示少根元素:
Student stu = new Student()
{
Age = 10,
Class = "一般qw",
Name = "Tom",
Number = 1,
mac="goodbyte"
};
using (var memoryFile = MemoryMappedFile.CreateFromFile("c:\\x.xml", FileMode.Open, "substationfile", 100*1024, MemoryMappedFileAccess.ReadWrite))
{
using (var mmf = MemoryMappedFile.OpenExisting("substationfile"))
{
using (var ms = mmf.CreateViewStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(Student));
serializer.Serialize(ms, stu);
var xmlClass = new XmlDocument();
xmlClass.Load(ms);// 出错少根元素
}
}
}
------解决思路----------------------
没创建根元素?