Member 11989746 Ответов: 1

Связь между оболочкой и приложением (winform)


Я хочу создать оболочку winform (shell), которая могла бы запускать другое приложение winform (App1) внутри него (на панели) с помощью процесса.Start(startInfo);
Примечание: использование ссылки на App1.exe это не вариант.

Раковину хочу слушать события N сообщений из приложения app1, что это лучший способ, чтобы сделать это?

Каковы недостатки использования MemoryMappedFile?
Shell Code-
 using (MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("AppWinShell", 1024))
            using (MemoryMappedViewStream view = mmf.CreateViewStream())
            {
                BinaryReader reader = new BinaryReader(view);
                EventWaitHandle signal = new EventWaitHandle(false, EventResetMode.AutoReset, "WinShellEvent");
                Mutex mutex = new Mutex(false, "WinShellMutex");

                while (true)
                {
                    signal.WaitOne();
                    mutex.WaitOne();
                    reader.BaseStream.Position = 0;
                    string message = reader.ReadString();
                    WriteTextSafe(message);
                    mutex.ReleaseMutex();
                }
            }
App1 code -

        private void SendMessage()
        {
            using (MemoryMappedFile mmf = MemoryMappedFile.CreateOrOpen("AppWinShell", 1024))
            using (MemoryMappedViewStream view = mmf.CreateViewStream())
            {
                BinaryWriter writer = new BinaryWriter(view);
                EventWaitHandle signal = new EventWaitHandle(false, EventResetMode.AutoReset, "WinShellEvent");
                Mutex mutex = new Mutex(false, "WinShellMutex");

                mutex.WaitOne();
                writer.BaseStream.Position = 0;
                System.Diagnostics.Process p = System.Diagnostics.Process.GetCurrentProcess();
                writer.Write(PID + "^" + txtMessage.Text);
                signal.Set();
                mutex.ReleaseMutex();

                Thread.Sleep(10);
            }
        }



Мысли?

Что я уже пробовал:

Сопоставленный файл памяти, EventWaitHandle, мьютекс

1 Ответов

Рейтинг:
0

Gerry Schmitz

Цитата:
Каковы недостатки использования MemoryMappedFile?


c# - недостатки использования файлов с отображением памяти - переполнение стека[^]