Zazwyczaj widzę te dwa fragmenty kodu dookoła. Oba działają również w moim przypadku, ale do których należy się trzymać?Które z poniższych wyrażeń Mutex idealnie zapobiega wielu wystąpieniom aplikacji .Net i jaka jest różnica?
Przypadek 1:
bool isNew = false;
Mutex mutex = new Mutex(true, "MyApp_Mutex", out isNew);
if (!isNew)
{
MessageBox.Show("already running.", "Multiple Instances Not Allowed",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
return;
}
Przypadek 2:
Mutex mutex = new Mutex(false, "MyApp_Mutex"))
if (!mutex.WaitOne(0, false))
{
MessageBox.Show("already running.", "Multiple Instances Not Allowed",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
return;
}
Który jest idealnym sposobem między nimi, aby zapobiec wielu wystąpień?
Jaka jest różnica?
Ponadto widzę kody takie jak:
//if not return{ mutex.ReleaseMutex(); GC.Collect(); //application.Run(); GC.KeepAlive(mutex);
ramach drugiej metody, ale nigdy z pierwszym. Dlaczego to jest takie? Czy też popełniłem błąd?
Zasadniczo leży to w prawidłowym rozumieniu użytych parametrów i metod. Byłbym wdzięczny, gdyby ktoś mógł to krótko uszczegółowić, rozumiem, że nie połowę, gdy czytam dokumentację msdn.
Dzięki. Uważam, że pierwszy jest bardziej elegancki .. – nawfal
Mam jeszcze jedną wątpliwość, którą dodam do pytania. Będzie to bardzo pomocne, jeśli będziesz mógł się temu przyjrzeć. – nawfal
Tak, brzmi dla mnie logicznie. – nawfal