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

3
我是一名有用的助手,能够进行文本翻译。
我有一个带有DataGridView的Windows窗体,并将特定列的值读入列表中。我需要在单个内存映射文件中共享列表的所有值,但以下是我的担忧: 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;
        }

假设我的列表有以下项目:1.苹果2.芒果3.菠萝。请指导我如何处理上述代码。

2
使用其中一种序列化器(XML、JSON、二进制等)创建数据以进行共享比自己重新编写要容易得多...您能否澄清一下手动编写每个元素的目的是什么? - Alexei Levenkov
只是好奇,你为什么要使用内存映射文件?你在与其他进程通信吗? - RenniePet
1个回答

0
你需要使用锁(互斥量)并且希望将数组大小存储为mmf的第一个元素。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接