2014-12-01 79 views
3

我有一个窗体与datagridview,我正在读取列表中的特定列值。我需要在单个内存映射文件中共享列表的所有值,但以下是我所关心的: 1.以字节为单位查找列表大小。 2.需要共享列表的所有项目。如何共享内存映射文件中的列表值

这里是我正在共享的单一变量的值我的示例代码:

string MyName = "Seema"; 
    int totalBytes = MyName.Length * sizeof(Char) + 4; 
    public List<string> myList = new List<string>(); 

MemoryMappedFile MyText = MemoryMappedFile.CreateOrOpen("MyGlobalData", howManyBytes); 
       byte[] array1 = new byte[howManyBytes]; 
       array1 = GetBytes(Name); 

       using (var accessor = MyText.CreateViewAccessor(0, array1.Length)) 
       { 
        accessor.WriteArray(0, array1, 0, array1.Length); 
       } 


static byte[] GetBytes(string str) 
     { 
      byte[] bytes = new byte[str.Length * sizeof(char)]; 
      System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length); 
      return bytes; 
     } 

承担mylsit有项目1.苹果2.芒果菠萝3

请指导我如何着手以上代码

+2

使用众多序列化程序(XML,JSON,binary,...)中的一种来创建要共享的数据比自己重新创建数据要容易得多...您能否通过手动写出每个数据来澄清您试图实现的目标元件? – 2014-12-01 16:25:07

+0

只是好奇,为什么你使用内存映射文件?你是否与其他流程沟通? – RenniePet 2014-12-13 00:39:31

回答

0

您将需要使用锁定(互斥),并希望将数组大小存储为mmf中的第一个元素。