Считать структуру из разделяемой памяти - 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;
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы