Pregunta

Relacionado con esta pregunta , ¿cuál es la mejor práctica para nombrar un mutex? Me doy cuenta de que esto puede variar con el sistema operativo e incluso con la versión (especialmente para Windows), así que especifique la plataforma en la respuesta. Mi interés está en Win XP y Vista.

¿Fue útil?

Solución

Un nombre realmente seguro para un mutex global es <a description> + <a GUID>:

MyApp Single Instance Mutex : {c96f7db4-d743-4718-bef0-8533a198bcca}

Al usar un nombre como este, no hay absolutamente ninguna posibilidad de que otra persona use el mismo nombre mutex que tu mutex.

Al husmear con el explorador de procesos, puede ver que los GUID se usan en algunos lugares, aunque en general no se usan. Sin embargo, un patrón que emerge es que la palabra & Quot; mutex & Quot; se usa bastante y parece que a Microsoft le gusta usar capitols.

Otros consejos

Sugerencia :

Incorpore el tipo de objeto (Mutex en este caso) y el espacio de nombres de la aplicación en el nombre único. Esto generalmente será seguro. Si realmente quieres estar seguro, agrega también un Guid.

Ejemplo :

    string mutexName = "MUTEX: Skyz.Messaging.ThreadPooling.MyAppSingleInstance";

Ventajas:

Al crear una convención de nomenclatura para sus aplicaciones, facilita la administración de muchos nombres de objetos, crea un código más legible y facilita a los desarrolladores existentes y futuros comprender el código.

Consejo :

En lugar de usar un Mutex directamente en su código, escriba una clase de contenedor reutilizable que pueda hacer que el código sea más fácil de mantener en caso de que alguna vez quiera cambiar la implementación o agregar un ajuste. ¡Recuerde quitar el Mutex usando un patrón desechable o tendrá problemas!

using (SingletonProcess singletonProcess = new SingletonProcess("MUTEX: Skyz.Apps.MessagingQueue.InstanceMarker"))
        {
            if (singletonProcess.IsDuplicateInstance)
            {
                ConsoleWriter.WriteColorLine("An instance of the ExporterService exists, you cannot start a second instance.");
return  


            }

Puede combinar una descripción de lo que está protegiendo con la palabra " Guard "

Una búsqueda en Google de muestras de CreateMutex revela que " MyMutex " es el nombre mutex más común elegido.

Por lo tanto, debe nombrar su mutex " NotMyMutex " para garantizar la unicidad.

No he usado GUID en el pasado, pero estoy empezando a pensar que es una buena idea, si piensas en todos los desarrolladores del mundo que trabajan con software diferente.

A menos que piense en nombres bastante oscuros que puede estar seguro de que son únicos, debe pensar en los GUID.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top