2014-12-01 52 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中的第一個元素。