¿Cuál es la forma correcta de crear una aplicación WPF de instancia única?

Usando C # y WPF bajo .NET (en lugar de Formularios de Windows o consola), ¿cuál es la forma correcta de crear una aplicación que solo se puede ejecutar como una única instancia?

Sé que tiene algo que ver con algo mítico llamado mutex, rara vez puedo encontrar a alguien que se moleste en detenerse y explicar qué es uno de estos.

El código también debe informar a la instancia que ya se está ejecutando que el usuario intentó iniciar una segunda, y tal vez también pasar cualquier argumento de línea de comando si existía alguno.

preguntado el 20 de agosto de 08 a las 22:08

¿No libera CLR automáticamente cualquier exclusión mutua no publicada cuando la aplicación termina de todos modos? -

@Cocowalla: el finalizador debe deshacerse de los mutex no administrados a menos que no pueda saber si el mutex fue creado por la aplicación administrada o adjunto a una existente. -

Tener solo una instancia de su aplicación es razonable. Pero pasar argumentos a una aplicación ya existente me parece un poco tonto. No veo ninguna razón para hacerlo. Si asocia una aplicación con una extensión de archivo, debe abrir tantas aplicaciones como el usuario desee para abrir documentos. Ese es el comportamiento estándar que todos los usuarios esperarían. -

@Cocowalla El CLR no administra recursos nativos. Sin embargo, si un proceso termina, el sistema libera todos los identificadores (el sistema operativo, no el CLR). -

Prefiero la respuesta de @huseyint. Utiliza la propia clase 'SingleInstance.cs' de Microsoft, por lo que no tiene que preocuparse por Mutexes e IntPtrs. Además, no hay dependencia de VisualBasic (puaj). Ver codereview.stackexchange.com/questions/20871/… para más... -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.