Freigeben über


Process.HasExited-Eigenschaft

Ruft einen Wert ab, der angibt, ob der zugehörige Prozess beendet wurde.

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

Syntax

'Declaration
Public ReadOnly Property HasExited As Boolean
'Usage
Dim instance As Process
Dim value As Boolean

value = instance.HasExited
public bool HasExited { get; }
public:
property bool HasExited {
    bool get ();
}
/** @property */
public boolean get_HasExited ()
public function get HasExited () : boolean

Eigenschaftenwert

true, wenn der Betriebssystemprozess, auf den die Process-Komponente verweist, beendet wurde, ansonsten false.

Ausnahmen

Ausnahmetyp Bedingung

InvalidOperationException

Dem Objekt ist kein Prozess zugeordnet.

Win32Exception

Der Exitcode für den Prozess konnte nicht abgerufen werden.

Hinweise

Ein Wert true für HasExited gibt an, dass der zugeordnete Prozess ordnungsgemäß oder nicht ordnungsgemäß beendet wurde. Sie können das Beenden des zugeordneten Prozesses anfordern oder erzwingen, indem Sie CloseMainWindow oder Kill aufrufen. Wenn dem Prozess ein Handle zur Verfügung steht, gibt das Betriebssystem bei Beendigung des Prozesses den Prozessspeicher frei, behält jedoch administrative Informationen über den Prozess bei, z. B. Handle, Exitcode und Beendigungszeit. Zum Abrufen dieser Informationen können Sie die ExitCode-Eigenschaft und die ExitTime-Eigenschaft verwenden. Diese Eigenschaften werden automatisch für Prozesse aufgefüllt, die von dieser Komponente gestartet wurden. Die administrativen Informationen werden freigegeben, wenn alle dem Systemprozess zugeordneten Process-Komponenten zerstört wurden und für den beendeten Prozess keine Handles mehr vorhanden sind.

Ein Prozess kann unabhängig vom Code beendet werden. Wenn Sie den Prozess unter Verwendung dieser Komponente gestartet haben, aktualisiert das System den Wert von HasExited automatisch, auch wenn der zugeordnete Prozess unabhängig beendet wurde.

Beispiel

Im folgenden Beispiel wird eine Instanz von Editor gestartet. Anschließend wird die Auslastung des physikalischen Speichers durch den zugeordneten Prozess in Intervallen von zwei Sekunden für maximal zehn Sekunden abgerufen. Dabei wird ermittelt, ob der Prozess vor Ablauf von zehn Sekunden beendet wird. Im Beispiel wird der Prozess beendet, wenn er nach zehn Sekunden weiterhin ausgeführt wird.

Imports System
Imports System.Diagnostics
Imports System.Threading

Namespace Process_Sample
   Class MyProcessClass

      Public Shared Sub Main()
         Try

            Dim myProcess As Process
            myProcess = Process.Start("Notepad.exe")
            ' Display physical memory usage 5 times at intervals of 2 seconds.
            Dim i As Integer
            For i = 0 To 4
               If not myProcess.HasExited Then
               
                  ' Discard cached information about the process.
                  myProcess.Refresh()
                  ' Print working set to console.
                  Console.WriteLine("Physical Memory Usage: " + _
                                              myProcess.WorkingSet.ToString())
                  ' Wait 2 seconds.
                  Thread.Sleep(2000)
               Else 
                  Exit For
               End If
              
            Next i

           ' Close process by sending a close message to its main window.
           myProcess.CloseMainWindow()
           ' Free resources associated with process.
           myProcess.Close()

         Catch e As Exception
            Console.WriteLine("The following exception was raised: ")
            Console.WriteLine(e.Message)
         End Try
      End Sub 'Main
   End Class 'MyProcessClass
End Namespace 'Process_Sample
using System;
using System.Diagnostics;
using System.Threading;

namespace Process_Sample
{
   class MyProcessClass
   {
      public static void Main()
      {
         try
         {
            Process myProcess;
            myProcess = Process.Start("Notepad.exe");
            // Display physical memory usage 5 times at intervals of 2 seconds.
            for (int i = 0;i < 5; i++)
            {
               if (!myProcess.HasExited)
               {
                   // Discard cached information about the process.
                   myProcess.Refresh();
                   // Print working set to console.
                   Console.WriteLine("Physical Memory Usage: " 
                                        + myProcess.WorkingSet.ToString());
                   // Wait 2 seconds.
                   Thread.Sleep(2000);
               }
               else {
                   break;
               } 
            }

            // Close process by sending a close message to its main window.
            myProcess.CloseMainWindow();
            // Free resources associated with process.
            myProcess.Close();

         }
         catch(Exception e)
         {
            Console.WriteLine("The following exception was raised: ");
            Console.WriteLine(e.Message);
         }
      }
   }
}
#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   try
   {
      Process^ myProcess;
      myProcess = Process::Start(  "Notepad.exe" );
      
      // Display physical memory usage 5 times at intervals of 2 seconds.
      for ( int i = 0; i < 5; i++ )
      {
         if (  !myProcess->HasExited )
         {
            
            // Discard cached information about the process.
            myProcess->Refresh();
            
            // Print working set to console.
            Console::WriteLine( "Physical Memory Usage : {0}", myProcess->WorkingSet.ToString() );
            
            // Wait 2 seconds.
            Thread::Sleep( 2000 );
         }
         else
         {
            break;
         }

      }
      myProcess->CloseMainWindow();
      
      // Free resources associated with process.
      myProcess->Close();
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The following exception was raised: " );
      Console::WriteLine( e->Message );
   }

}

.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
Process.ExitCode-Eigenschaft
Process.ExitTime-Eigenschaft
WaitForExit
Process.EnableRaisingEvents-Eigenschaft
OnExited