Esta documentación está archivada y no tiene mantenimiento.

Process.Exited (Evento)

Se produce cuando termina un proceso.

Espacio de nombres: System.Diagnostics
Ensamblado: System (en system.dll)

public event EventHandler Exited
/** @event */
public void add_Exited (EventHandler value)

/** @event */
public void remove_Exited (EventHandler value)

JScript admite el uso de eventos, pero no admite la declaración de eventos nuevos.

El evento Exited indica que el proceso asociado ha terminado. El hecho de que se produzca este evento significa que el proceso ha terminado porque ha sido anulado o que el proceso ha terminado correctamente.

La notificación de que el proceso ha terminado puede ser de dos formas: sincrónica y asincrónica. La notificación sincrónica se basa en una llamada al método WaitForExit para detener el procesamiento de la aplicación hasta que el componente asociado haya terminado. La notificación asincrónica se basa en el evento Exited. En cualquier caso, la propiedad EnableRaisingEvents debe establecerse en true para que el componente Process reciba la notificación de que el proceso ha terminado.

Cuando el sistema operativo cierra un proceso, cualquier componente del proceso que esté esperando para finalizarse recibe una notificación. Después, el componente puede obtener acceso a la información del proceso asociado, que todavía reside en la memoria del sistema operativo (como la propiedad ExitTime) mediante el uso del identificador del proceso.

Como el proceso asociado ha terminado, la propiedad Handle del componente ya no apunta a un recurso del proceso existente. En lugar de ello, sólo puede utilizarse para obtener acceso a la información del sistema operativo acerca del recurso del proceso. El sistema reconoce la existencia de identificadores de procesos terminados que no han sido liberados por los componentes Process, por lo que mantiene la información de las propiedades ExitTime y Handle en memoria hasta que el componente Process libera los recursos expresamente.

NotaNota

Aunque todavía exista un identificador de un proceso terminado, no puede volver a llamar a Start para restablecer la conexión con el mismo proceso. Al llamar a Start, automáticamente se libera el proceso asociado y se establece una conexión con un proceso que tiene el mismo archivo pero cuya propiedad Handle es totalmente nueva.

En el ejemplo de código siguiente se crea un proceso que imprime un archivo. Se provoca el evento Exited al salir del proceso porque se estableció el valor de la propiedad EnableRaisingEvents cuando se creó el proceso. El controlador de eventos Exited muestra información del proceso.

Imports System
Imports System.Diagnostics
Imports System.ComponentModel
Imports System.Threading
Imports Microsoft.VisualBasic

Class PrintProcessClass

    Private WithEvents myProcess As New Process
    Private elapsedTime As Integer
    Private eventHandled As Boolean

    ' Print a file with any known extension.
    Sub PrintDoc(ByVal fileName As String)

        elapsedTime = 0
        eventHandled = False

        Try
            ' Start a process to print a file and raise an event when done.
            myProcess.StartInfo.FileName = fileName
            myProcess.StartInfo.Verb = "Print"
            myProcess.StartInfo.CreateNoWindow = True
            myProcess.EnableRaisingEvents = True
            myProcess.Start()

        Catch ex As Exception
            Console.WriteLine("An error occurred trying to print ""{0}"":" & _
                vbCrLf & ex.Message, fileName)
            Return
        End Try

        ' Wait for Exited event, but not more than 30 seconds.
        Const SLEEP_AMOUNT As Integer = 100
        Do While Not eventHandled
            elapsedTime += SLEEP_AMOUNT
            If elapsedTime > 30000 Then
                Exit Do
            End If
            Thread.Sleep(SLEEP_AMOUNT)
        Loop
    End Sub

    ' Handle Exited event and display process information.
    Private Sub myProcess_Exited(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles myProcess.Exited

        eventHandled = True
        Console.WriteLine("Exit time:    {0}" & vbCrLf & _
            "Exit code:    {1}" & vbCrLf & "Elapsed time: {2}", _
            myProcess.ExitTime, myProcess.ExitCode, elapsedTime)
    End Sub

    Shared Sub Main(ByVal args() As String)

        ' Verify that an argument has been entered.
        If args.Length <= 0 Then
            Console.WriteLine("Enter a file name.")
            Return
        End If

        ' Create the process and print the document.
        Dim myProcess As New PrintProcessClass
        myProcess.PrintDoc(args(0))
    End Sub
End Class

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0
Mostrar: