Считать структуру из разделяемой памяти - C#
Формулировка задачи:
Добрый день!
Есть разделяемый файл. В приложении А в файл запихиваю структуру. В приложении Б считываю эту структуру из файла. Выдается исключение:
System.ArgumentException: Указанный тип должен представлять собой структуру, не содержащую ссылок.
То есть функции MemoryMappedViewAccessor.Read не нравится присутствие string в структуре. Тогда как передавать подобные структуры?
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] struct PTSTRUCT { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)] public string tname; int y; } PTSTRUCT pt = new PTSTRUCT(); try { using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("{EE95CC58-86D3-4DA2-A93E-5322C6B1267A}")) { Mutex mutex = Mutex.OpenExisting("{E2E2EF8B-76AF-4462-B7E7-BCC0E1F5BD7B}"); mutex.WaitOne(); using (MemoryMappedViewAccessor mmva = mmf.CreateViewAccessor()) { mmva.Read<PTSTRUCT>(0, out pt); } mutex.ReleaseMutex(); } }
Решение задачи: «Считать структуру из разделяемой памяти»
textual
Листинг программы
unsafe struct PTSTRUCT { public fixed char tname[30]; int y; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д