Retroceder   Foros del Web > Programación para sitios web > .NET > win forms

Respuesta
 
Herramientas Desplegado
Antiguo 28-ago-2006, 08:17   #1 (permalink)
BassXpander está en el buen camino
 
Avatar de BassXpander
 
Fecha de Ingreso: septiembre-2005
Ubicación: Mexico
Mensajes: 75
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 ÷·.·´¯`·)»»»
BassXpander está desconectado   Responder Citando
Antiguo 28-ago-2006, 09:21   #2 (permalink)
RicaJ0625 está en el buen camino
 
Avatar de RicaJ0625
 
Fecha de Ingreso: noviembre-2004
Ubicación: La Chorrera, Panamá
Mensajes: 85
Cool

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
RicaJ0625 está desconectado   Responder Citando
Antiguo 28-ago-2006, 10:14   #3 (permalink)
BassXpander está en el buen camino
 
Avatar de BassXpander
 
Fecha de Ingreso: septiembre-2005
Ubicación: Mexico
Mensajes: 75
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 ÷·.·´¯`·)»»»
BassXpander está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:24.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93