/ / Використовувати mutext для виявлення і виклику запущеного процесу - c #, mutex

Використовуйте mutex для виявлення і запуску процесу - c #, mutex

Як я можу використовувати mutex, щоб знайти перший процес за допомогою GUID і функцію виклику в ньому? Як і у веб-браузері, коли ви намагаєтеся запустити його вдруге, просто відкрийте нове вікно.

// appGuid is const string containing app GUID
using (Mutex mutex = new Mutex(false, "Global\" + appGuid))
{
if (!mutex.WaitOne(0, false))
{
// CODE TO FIND AND CALL FIRST PROCESS AND THEN EXIT
Environment.Exit(0);
}
else
{
App app = new App();
app.InitializeComponent();
app.Run();
}
}

Відповіді:

1 для відповіді № 1

Я думаю, що є багато способів вирішити цю проблему.Так, ви відкрили другий екземпляр, але ми дозволяємо тільки один, так що проксі ваш запит до першої інстанції"проблема.

  • Ви можете прослухати хост-процес на aсокет і коли мьютекс виявляє, що його вже був відкритий виклик у прослуховуючий сокет. Можливо, використовуйте щось настільки просте, як .NET remoting, ніякої реальної необхідності йти повним роздуванням WCF тут або сирим сокетом
  • Ви також можете мати буфер спільної пам'яті і писати за допомогою спільної пам'яті. Але це вимагатиме синхронізації між двома процесами, так що це може бути дещо брудним
  • Ви можете просто запустити файл і прослухати файл хоста у відомому місці. Це, напевно, найпростіше, найменш технологічне рішення

Це 3 ідеї, ймовірно, більше

Але, якщо ви просто хочете отримати інформацію про процес, чому не просто шукати процес ім'я?