Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ruft den Wert ab, der vom zugeordneten Prozess beim Beenden angegeben wurde.
Namespace: System.Diagnostics
Assembly: System (in system.dll)
Syntax
'Declaration
Public ReadOnly Property ExitCode As Integer
'Usage
Dim instance As Process
Dim value As Integer
value = instance.ExitCode
public int ExitCode { get; }
public:
property int ExitCode {
int get ();
}
/** @property */
public int get_ExitCode ()
public function get ExitCode () : int
Eigenschaftenwert
Der Code, der vom zugeordneten Prozess beim Beenden angegeben wurde.
Ausnahmen
| Ausnahmetyp | Bedingung |
|---|---|
Der Prozess wurde nicht beendet. – oder – Das Handle des Prozesses ist ungültig. |
Hinweise
Rufen Sie mithilfe von ExitCode den Status ab, der vom Systemprozess beim Beenden zurückgegeben wurde. Sie können den Exitcode auf sehr ähnliche Weise verwenden wie einen ganzzahligen Rückgabewert einer main()-Prozedur.
Der ExitCode-Wert für einen Prozess spiegelt die spezifische Konvention wider, die der Anwendungsentwickler für diesen Prozess implementiert hat. Wenn Sie den Exitcodewert für Entscheidungen im Code verwenden, müssen Sie die vom Anwendungsprozess verwendete Konvention für Exitcodes kennen.
Entwickler kennzeichnen eine erfolgreiche Beendigung üblicherweise durch einen ExitCode-Wert von 0 und Fehler durch Werte ungleich 0, anhand derer die aufrufende Methode den Grund für die nicht ordnungsgemäße Beendigung des Prozesses erkennen kann. Diese Richtlinien entsprechen der Konvention, auch wenn ihre Einhaltung nicht zwingend erforderlich ist.
Wenn Sie versuchen, ExitCode vor Beendigung des Prozesses abzurufen, wird eine Ausnahme ausgelöst. Überprüfen Sie zuerst die HasExited-Eigenschaft, um festzustellen, ob der zugeordnete Prozess beendet wurde.
Zum Beenden eines zugeordneten Prozesses können Sie die CloseMainWindow-Methode oder die Kill-Methode verwenden.
Zwei Möglichkeiten für die Benachrichtigung beim Beenden des zugeordneten Prozesses stehen zur Verfügung: synchron und asynchron. Die synchrone Benachrichtigung beruht auf dem Aufruf der WaitForExit-Methode zum Unterbrechen der Anwendungsverarbeitung, bis die zugeordnete Komponente beendet wird. Die asynchrone Benachrichtigung beruht auf dem Exited-Ereignis. In beiden Fällen muss EnableRaisingEvents auf true festgelegt werden, damit die Process-Komponente über die Beendigung des Prozesses benachrichtigt wird.
Beispiel
Im folgenden Beispiel wird eine Instanz von Editor gestartet. Anschließend werden in dem Beispiel verschiedene Eigenschaften des zugeordneten Prozesses abgerufen und angezeigt. Im Beispiel wird festgestellt, wann der Prozess beendet wird, und der Exitcode des Prozesses wird angezeigt.
Imports System
Imports System.Diagnostics
Namespace ProcessSample
Class ProcessMonitorSample
Public Shared Sub Main()
' Define variables to track the peak
' memory usage of the process.
Dim peakPagedMem As Long = 0
Dim peakWorkingSet As Long = 0
Dim peakVirtualMem As Long = 0
Dim myProcess As Process = Nothing
Try
' Start the process.
myProcess = Process.Start("NotePad.exe")
' Display process statistics until
' the user closes the program.
Do
If Not myProcess.HasExited Then
' Refresh the current process property values.
myProcess.Refresh()
Console.WriteLine()
' Display current process statistics.
Console.WriteLine("{0} -", myProcess.ToString())
Console.WriteLine("-------------------------------------")
Console.WriteLine(" physical memory usage: {0}", _
myProcess.WorkingSet64)
Console.WriteLine(" base priority: {0}", _
myProcess.BasePriority)
Console.WriteLine(" priority class: {0}", _
myProcess.PriorityClass)
Console.WriteLine(" user processor time: {0}", _
myProcess.UserProcessorTime)
Console.WriteLine(" privileged processor time: {0}", _
myProcess.PrivilegedProcessorTime)
Console.WriteLine(" total processor time: {0}", _
myProcess.TotalProcessorTime)
' Update the values for the overall peak memory statistics.
peakPagedMem = myProcess.PeakPagedMemorySize64
peakVirtualMem = myProcess.PeakVirtualMemorySize64
peakWorkingSet = myProcess.PeakWorkingSet64
If myProcess.Responding Then
Console.WriteLine("Status = Running")
Else
Console.WriteLine("Status = Not Responding")
End If
End If
Loop While Not myProcess.WaitForExit(1000)
Console.WriteLine()
Console.WriteLine("Process exit code: {0}", myProcess.ExitCode)
' Display peak memory statistics for the process.
Console.WriteLine("Peak physical memory usage of the process: {0}", _
peakWorkingSet)
Console.WriteLine("Peak paged memory usage of the process: {0}", _
peakPagedMem)
Console.WriteLine("Peak virtual memory usage of the process: {0}", _
peakVirtualMem)
Finally
If Not myProcess Is Nothing Then
myProcess.Close
End If
End Try
End Sub 'Main
End Class
End Namespace
using System;
using System.Diagnostics;
namespace ProcessSample
{
class ProcessMonitorSample
{
public static void Main()
{
// Define variables to track the peak
// memory usage of the process.
long peakPagedMem = 0,
peakWorkingSet = 0,
peakVirtualMem = 0;
Process myProcess = null;
try
{
// Start the process.
myProcess = Process.Start("NotePad.exe");
// Display the process statistics until
// the user closes the program.
do
{
if (!myProcess.HasExited)
{
// Refresh the current process property values.
myProcess.Refresh();
Console.WriteLine();
// Display current process statistics.
Console.WriteLine("{0} -", myProcess.ToString());
Console.WriteLine("-------------------------------------");
Console.WriteLine(" physical memory usage: {0}",
myProcess.WorkingSet64);
Console.WriteLine(" base priority: {0}",
myProcess.BasePriority);
Console.WriteLine(" priority class: {0}",
myProcess.PriorityClass);
Console.WriteLine(" user processor time: {0}",
myProcess.UserProcessorTime);
Console.WriteLine(" privileged processor time: {0}",
myProcess.PrivilegedProcessorTime);
Console.WriteLine(" total processor time: {0}",
myProcess.TotalProcessorTime);
// Update the values for the overall peak memory statistics.
peakPagedMem = myProcess.PeakPagedMemorySize64;
peakVirtualMem = myProcess.PeakVirtualMemorySize64;
peakWorkingSet = myProcess.PeakWorkingSet64;
if (myProcess.Responding)
{
Console.WriteLine("Status = Running");
}
else
{
Console.WriteLine("Status = Not Responding");
}
}
}
while (!myProcess.WaitForExit(1000));
Console.WriteLine();
Console.WriteLine("Process exit code: {0}",
myProcess.ExitCode);
// Display peak memory statistics for the process.
Console.WriteLine("Peak physical memory usage of the process: {0}",
peakWorkingSet);
Console.WriteLine("Peak paged memory usage of the process: {0}",
peakPagedMem);
Console.WriteLine("Peak virtual memory usage of the process: {0}",
peakVirtualMem);
}
finally
{
if (myProcess != null)
{
myProcess.Close();
}
}
}
}
}
#using <system.dll>
using namespace System;
using namespace System::Diagnostics;
int main()
{
// Define variables to track the peak
// memory usage of the process.
_int64 peakPagedMem = 0,peakWorkingSet = 0,peakVirtualMem = 0;
Process^ myProcess = nullptr;
try
{
// Start the process.
myProcess = Process::Start( "NotePad.exe" );
// Display the process statistics until
// the user closes the program.
do
{
if ( !myProcess->HasExited )
{
// Refresh the current process property values.
myProcess->Refresh();
Console::WriteLine();
// Display current process statistics.
Console::WriteLine( "{0} -", myProcess );
Console::WriteLine( "-------------------------------------" );
Console::WriteLine( " physical memory usage: {0}", myProcess->WorkingSet64 );
Console::WriteLine( " base priority: {0}", myProcess->BasePriority );
Console::WriteLine( " priority class: {0}", myProcess->PriorityClass );
Console::WriteLine( " user processor time: {0}", myProcess->UserProcessorTime );
Console::WriteLine( " privileged processor time: {0}", myProcess->PrivilegedProcessorTime );
Console::WriteLine( " total processor time: {0}", myProcess->TotalProcessorTime );
// Update the values for the overall peak memory statistics.
peakPagedMem = myProcess->PeakPagedMemorySize64;
peakVirtualMem = myProcess->PeakVirtualMemorySize64;
peakWorkingSet = myProcess->PeakWorkingSet64;
if ( myProcess->Responding )
{
Console::WriteLine( "Status = Running" );
}
else
{
Console::WriteLine( "Status = Not Responding" );
}
}
}
while ( !myProcess->WaitForExit( 1000 ) );
Console::WriteLine();
Console::WriteLine( "Process exit code: {0}", myProcess->ExitCode );
// Display peak memory statistics for the process.
Console::WriteLine( "Peak physical memory usage of the process: {0}", peakWorkingSet );
Console::WriteLine( "Peak paged memory usage of the process: {0}", peakPagedMem );
Console::WriteLine( "Peak virtual memory usage of the process: {0}", peakVirtualMem );
}
finally
{
if ( myProcess != nullptr )
{
myProcess->Close();
}
}
}
.NET Framework-Sicherheit
- SecurityPermission zum Aufrufen von Process-Membern. Anforderungswert: LinkDemand; Benannte Berechtigungssätze: FullTrust.
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
HasExited
CloseMainWindow
Kill
WaitForExit
Process.EnableRaisingEvents-Eigenschaft