Связь между оболочкой и приложением (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, мьютекс