/ / Използвайте mutext за откриване и извикване на започнат процес - c #, mutex

Използвайте mutext за откриване и стартиране на процеса - 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 отдалечено, няма реална нужда да отидете пълноценно WCF тук или необработено писане
  • Можете също така да имате буфер за споделена памет и да пишете с обща памет. Но това ще изисква синхронизация между двата процеса, така че може да бъде доста объркан
  • Можете просто да задействате файл и хост процесите да слушат за файлови събития на известно място. Това е може би най-лесното и най-нискотехнологичното решение

Това са 3 идеи, вероятно има повече

Но ако просто искате да получите информация за процеса, защо просто не търсите процеса от име?