如何在内存映射文件中共享List值

时间:2014-12-01 16:09:47

标签: c# .net windows c#-4.0 memory-mapped-files

我有一个带有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. Apple 2. Mango 3. Pineapple

请指导我如何继续上述代码

1 个答案:

答案 0 :(得分:0)

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