Normalmente veo estas dos piezas de código por todas partes. Ambas cosas también funcionan en mi caso, pero ¿a quién debo adherirme?¿Cuál de las siguientes expresiones Mutex previene idealmente múltiples instancias de la aplicación .Net y cuál es la diferencia?
Caso 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;
}
Caso 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;
}
¿Cuál es la forma ideal entre los dos para evitar que varias instancias?
¿Cuál es la diferencia?
Por otra parte veo como estos códigos:
//if not return{ mutex.ReleaseMutex(); GC.Collect(); //application.Run(); GC.KeepAlive(mutex);
bajo el segundo método, pero nunca con la primera. ¿Por qué es así? ¿O me equivoqué?
Básicamente se trata de la comprensión adecuada de los parámetros y métodos utilizados. Apreciaría si alguien puede detallarlo brevemente, no entiendo ni la mitad al leer la documentación de msdn ...
Gracias. Encuentro el primero en ser más elegante .. – nawfal
Tengo una duda más que añadiré a la pregunta. Sería de gran ayuda si puedes ver eso. – nawfal
Sí, me suena lógico. – nawfal