Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Patrón Singleton (http://www.forosdelweb.com/f29/patron-singleton-420799/)

BassXpander 28/08/2006 08:17

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

RicaJ0625 28/08/2006 09:21

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


BassXpander 28/08/2006 10:14

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


La zona horaria es GMT -6. Ahora son las 22:54.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.