Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Process.HasExited-Eigenschaft

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

Namespace:  System.Diagnostics
Assembly:  System (in System.dll)
[BrowsableAttribute(false)]
public bool HasExited { get; }

Eigenschaftswert

Typ: System.Boolean
true, wenn der Betriebssystemprozess, auf den die Process-Komponente verweist, beendet wurde, ansonsten false.
Ausnahme Bedingung
InvalidOperationException

Dem Objekt ist kein Prozess zugeordnet.

Win32Exception

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

NotSupportedException

Sie versuchen, auf die HasExited-Eigenschaft für einen auf einem Remotecomputer ausgeführten Prozess zuzugreifen. Diese Eigenschaft ist nur für Prozesse verfügbar, die auf dem lokalen Computer ausgeführt werden.

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.

Hinweis Hinweis

Wenn die Standardausgabe an asynchrone Ereignishandler umgeleitet wurde, ist die Verarbeitung der Ausgabe möglicherweise noch nicht abgeschlossen, wenn diese Eigenschaft truezurückgibt. Um sicherzustellen, dass die asynchrone Ereignisbehandlung abgeschlossen wurde, rufen Sie die WaitForExit()-Überladung auf, die keine Parameter annimmt, bevor HasExited überprüft wurde.

Im folgenden Beispiel wird eine Instanz von Editor gestartet. Anschließend wird die Auslastung des physischen 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.



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);
         }
      }
   }
}


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1
  • LinkDemand  

    für volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann nicht von teilweise vertrauenswürdigem Code verwendet werden.

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ