Proceso vacio ¿o no?

19/07/2006 - 11:48 por Fernando | Informe spam
Hola grupo, gracias antes que nada. Resulta que he definido un proceso
de la siguiente forma :

Dim MiProceso As System.Diagnostics.Process

y hago lo siguiente:
MiProceso = MiProceso.Start("archivo.Exe")

el problema viene cuando quiero preguntarle a MiProceso si se esta
ejecutando o no, ya que cuando le pregunto por "Nothing" o si tiene ID,
etc , me dice que no tiene ningun proceso asociado el objeto. Ahora la
pregunta, ¿como hago para preguntarle al objeto "MiProceso" si tiene
algun proceso asociado? Desde ya muchas gracias

Fernando
 

Leer las respuestas

#1 Leonardo Azpurua [mvp vb]
19/07/2006 - 17:02 | Informe spam
"Fernando" escribió en el mensaje
news:
Hola grupo, gracias antes que nada. Resulta que he definido un proceso de
la siguiente forma :

Dim MiProceso As System.Diagnostics.Process

y hago lo siguiente:
MiProceso = MiProceso.Start("archivo.Exe")

el problema viene cuando quiero preguntarle a MiProceso si se esta
ejecutando o no, ya que cuando le pregunto por "Nothing" o si tiene ID,
etc , me dice que no tiene ningun proceso asociado el objeto. Ahora la
pregunta, ¿como hago para preguntarle al objeto "MiProceso" si tiene algun
proceso asociado? Desde ya muchas gracias

Fernando



Hola, Fernando:

La verdad, es la primera vez que hago algo con esa clase :-)

Pero al parecer funciona bien, segun compruebo con este codigo:

Dim WithEvents miProceso As System.Diagnostics.Process

Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button12.Click
miProceso = System.Diagnostics.Process.Start("C:\Windowsotepad.exe")
miProceso.EnableRaisingEvents = True
End Sub

Private Sub miProceso_Exited(ByVal sender As Object, ByVal e As
System.EventArgs) Handles miProceso.Exited
MsgBox("Proceso " & miProceso.Id & " terminado")
miProceso.Dispose()
End Sub

Te sugiero que los objetos de tipo Process o bien sean Nothing, o bien esten
asociados a un proceso activo. No uses referencias de instancia para llamar
a miembros estaticos (Shared) de la clase, es decir,
miProceso.Start(nombreArchivo) es confuso.

Cuando llamas a Process.Start(archivo) pueden pasar dos cosas: se crea un
nuevo proceso donde se ejecuta el archivo, o se genera una excepcion. De
manera que si no tuviste una excepcion, el proceso existe y se está
ejecutando (miProceso.hasExited = False).

Si eres disciplinado en el manejo de los procesos, no deberias tener ningun
tipo de dilema.

Salud!

Preguntas similares