Foros del Web » Programación para mayores de 30 ;) » .NET »

Patrón Singleton

Estas en el tema de Patrón Singleton en el foro de .NET en Foros del Web. Saludos !! Tengo una aplicación windows y necesito que se genere únicamente una sola instancia. Sé que con el Patrón Singleton y mutex puedo hacerlo, ...
  #1 (permalink)  
Antiguo 28/08/2006, 08:17
Avatar de BassXpander  
Fecha de Ingreso: septiembre-2005
Ubicación: Mexico
Mensajes: 75
Antigüedad: 18 años, 7 meses
Puntos: 0
Patrón Singleton

Saludos !!

Tengo una aplicación windows y necesito que se genere únicamente una sola instancia. Sé que con el Patrón Singleton y mutex puedo hacerlo, pero la información que encuentro indica como realizarlo con dos formularios, es decir, el formulario A abre a Formulario B (lo he probado y funciona). Sin embargo, yo no tengo dos formularios, unicamente tengo uno y no tengo idea de como puedo adaptar el código de singleton a un solo formulario.

Lo que pretendo lograr es que al ejecutarse la aplicación verifique si ya hay una instancia ejecutandose, si no la hay, que se cree una nueva instancia.

PD: Ya revise las FAQS, y hay info para Formularios MDI y no MDI, sólo que en este ultimo explican el caso para dos formularios.


Alguien puede ayudarme?

Gracias
__________________
«««(·´¯`·.·÷ Si no puedo dibujarlo... es que no lo entiendo. Albert Einstein ÷·.·´¯`·)»»»
  #2 (permalink)  
Antiguo 28/08/2006, 09:21
Avatar de RicaJ0625  
Fecha de Ingreso: noviembre-2004
Ubicación: La Chorrera, Panamá
Mensajes: 86
Antigüedad: 19 años, 6 meses
Puntos: 0
Esto te puede servir lo encontre en este sitio:
http://www.elguille.info/colabora/pu...evinstance.htm

Código:
 
'Agregar todo el código en el formulario principal.

Shared Sub Main()
    'Usamos la clase Process para sacar información de procesos en ejecución.
    'Definimos una matríz de procesos
    Dim MisProcesos() As Process

    'Asignamos a la matríz todos los procesos en ejecución 
    'que tengan por nombre el de nuestra aplicación.
    MisProcesos = Process.GetProcessesByName(Application.ProductName.ToString)

    'MisProcesos.Length nunca es cero, porque
    'este mismo proceso cuenta;
    'por eso miramos si solo hay una coincidencia.

    If MisProcesos.Length = 1 Then
        'Ejecutamos nuestra aplicación
        Application.Run(New Form1())

    Else 'Hay más de un proceso ejecutandose
        'MessageBox.Show("Ya se está ejecutando una instancia") 
        Application.Exit()
    End If

End Sub 
  #3 (permalink)  
Antiguo 28/08/2006, 10:14
Avatar de BassXpander  
Fecha de Ingreso: septiembre-2005
Ubicación: Mexico
Mensajes: 75
Antigüedad: 18 años, 7 meses
Puntos: 0
Gracias por la respuesta RicaJ0625 !!

Me funcionó el código. Solo tengo una duda, he observado que cuando la aplicación obtiene la lista de procesos, el uso del cpu se incrementa notablemente. Esto es normal?

Gracias
__________________
«««(·´¯`·.·÷ Si no puedo dibujarlo... es que no lo entiendo. Albert Einstein ÷·.·´¯`·)»»»
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:18.