По вашей простой причине необходимости IPC, я бы искал другое решение.
Этот код подтвержден для работы в Linux и Windows. Должно работать и на Mac:
public static IList Processes()
{
IList<Process> processes = new List<Process>();
foreach (System.Diagnostics.Process process in System.Diagnostics.Process.GetProcesses())
{
Process p = new Process();
p.Pid = process.Id;
p.Name = process.ProcessName;
processes.Add(p);
}
return processes;
}
Просто переберите список и найдите свое собственное ProcessName.
Чтобы отправить сообщение в ваше приложение, просто используйте MyProcess.StandardInput
для записи в стандартный ввод приложения. Это работает только при условии, что ваше приложение является приложением с графическим интерфейсом.
Если у вас есть проблемы с этим, то вы можете использовать специальный файл блокировки. Используя класс FileSystemWatcher, вы можете проверить, когда он изменяется. Таким образом, второй экземпляр может записать сообщение в файл, а затем первый экземпляр заметит, что он изменяется, и может прочитать содержимое файла, чтобы получить сообщение.