Freigeben über


Process.EnableRaisingEvents-Eigenschaft

Ruft ab oder legt fest, ob beim Beenden des Prozesses das Exited-Ereignis ausgelöst werden soll.

Namespace: System.Diagnostics
Assembly: System (in system.dll)

Syntax

'Declaration
Public Property EnableRaisingEvents As Boolean
'Usage
Dim instance As Process
Dim value As Boolean

value = instance.EnableRaisingEvents

instance.EnableRaisingEvents = value
public bool EnableRaisingEvents { get; set; }
public:
property bool EnableRaisingEvents {
    bool get ();
    void set (bool value);
}
/** @property */
public boolean get_EnableRaisingEvents ()

/** @property */
public void set_EnableRaisingEvents (boolean value)
public function get EnableRaisingEvents () : boolean

public function set EnableRaisingEvents (value : boolean)

Eigenschaftenwert

true, wenn das Exited-Ereignis ausgelöst werden soll, wenn der zugeordnete Prozess beendet wird (entweder durch Beenden oder einen Aufruf von Kill), andernfalls false. Der Standardwert ist false.

Hinweise

Die EnableRaisingEvents-Eigenschaft gibt an, ob die Komponente benachrichtigt werden soll, wenn das Betriebssystem einen Prozess beendet hat. Bei einer asynchronen Verarbeitung wird die Anwendung mithilfe der EnableRaisingEvents-Eigenschaft über das Beenden eines Prozesses benachrichtigt. Um das synchrone Warten der Anwendung auf ein Beendigungsereignis zu erzwingen (wodurch die Verarbeitung der Anwendung bis zum Eintreten des Beendigungsereignisses unterbrochen wird), verwenden Sie die WaitForExit-Methode.

Hinweis

Wenn Sie Visual Studio verwenden und auf eine Process-Komponente im Projekt doppelklicken, werden automatisch ein Exited-Ereignisdelegat und ein Ereignishandler generiert. Zusätzlicher Code legt die EnableRaisingEvents-Eigenschaft auf false fest. Sie müssen diese Eigenschaft in true ändern, damit der Ereignishandler beim Beenden des zugeordneten Prozesses ausgeführt wird.

Wenn der Wert der EnableRaisingEvents-Komponente auf true festgelegt ist und ein zugeordneter Prozess vom Betriebssystem ordnungsgemäß oder nicht ordnungsgemäß beendet wurde, benachrichtigt das Betriebssystem jede Prozesskomponente, der der Prozess zugeordnet war. Wenn der Prozess von einer Komponente gestartet wurde, kann diese anschließend auf die administrativen Informationen für den zugeordneten Prozess zugreifen, die vom Betriebssystem noch gespeichert werden. Diese Informationen beinhalten ExitTime und ExitCode.

Nach Beenden des zugeordneten Prozesses zeigt das Handle der Komponente nicht mehr auf eine vorhandene Prozessressource. Stattdessen können Sie damit nur auf die Informationen des Betriebssystems über die Prozessressource zugreifen. Das Betriebssystem berücksichtigt das Vorhandensein von Handles für beendete Prozesse, die nicht von Process-Komponenten freigegeben wurden, und behält daher Informationen zu ExitTime und Handle im Speicher.

Das Überwachen auf Beendigung von Prozessen ist mit einem gewissen Aufwand verbunden. Wenn EnableRaisingEvents auf true festgelegt ist, wird das Exited-Ereignis bei Beendigung des zugeordneten Prozesses ausgelöst. Die Prozeduren, die Sie für das Exited-Ereignis angegeben haben, werden zu dieser Zeit ausgeführt.

In einigen Fällen startet die Anwendung einen Prozess, muss jedoch nicht über dessen Beendigung benachrichtigt werden. Die Anwendung kann z. B. den Editor starten, um dem Benutzer die Bearbeitung von Texten zu ermöglichen, dann jedoch die Anwendung Editor nicht weiter verwenden. Sie können festlegen, dass Sie bei Beendigung des Prozesses nicht informiert werden, da dies für die weitere Ausführung der Anwendung nicht relevant ist. Durch Festlegen von EnableRaisingEvents auf false werden Systemressourcen gespart.

Beispiel

Im folgenden Codebeispiel wird ein Prozess erstellt, der eine Datei druckt. Die EnableRaisingEvents-Eigenschaft wird festgelegt, damit der Prozess das Exited-Ereignis auslöst, wenn er beendet wird. Der Exited-Ereignishandler zeigt Prozessinformationen an.

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

.NET Framework-Sicherheit

Plattformen

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

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0

Siehe auch

Referenz

Process-Klasse
Process-Member
System.Diagnostics-Namespace
WaitForExit
Exited
CloseMainWindow
Kill
Handle
ExitTime
HasExited