como se si la aplicacion esta corriendo

29/10/2004 - 12:05 por Dario | Informe spam
Porque la verdaden Win 98 demora en levantar y hay veces que clikean varias
veces y abre mas de una venta.

Preguntas similare

Leer las respuestas

#1 Rubén Vigón
29/10/2004 - 11:56 | Informe spam
El siguiente código reemplaza al «App.PrevInstance» de Visual Basic 6:

UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.- GetCurrentProcess.ProcessName)) > 0

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://www.mvp-access.com/rubenvigon
Respuesta Responder a este mensaje
#2 Eduardo A. Morcillo [MS MVP VB]
29/10/2004 - 17:56 | Informe spam
El siguiente código reemplaza al «App.PrevInstance» de Visual Basic 6:

UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.-
GetCurrentProcess.ProcessName)) > 0



Pero si cambias el nombre del ejecutable, eso falla. Si la idea es evitar
varias instancias lo mejor es usar un mutex. Como propietario de un mutex
puede ser solo un hilo a la vez, cualquier intento de tomar la propiedad de
un mutex desde un nuevo hilo falla hasta que el hilo original lo libera.
Siendo objetos globales, esto se puede aplicar a hilos de procesos distintos
permitiendo entonces saber si ya esta corriendo o no una instancia anterior.

Private Shared _prevInstanceMutex As System.Threading.Mutex

Public Shared Function PrevInstance() As Boolean

Dim nuevo As Boolean
Dim nombre As String

' Obtengo el nombre completo del ensamblado
' para usarlo como nombre del mutex
nombre = Reflection.Assembly.GetEntryAssembly.FullName

' Creo el mutex intentando ser su propietario.
' Si el mutex ya fue creado por otra instancia,
' no se va a poder tomar propiedad del mutex
' y nuevo sera = false
_prevInstanceMutex = New System.Threading.Mutex(True, nombre,
nuevo)

Return Not nuevo

End Function

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida