Process.HasExited Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar ett värde som anger om den associerade processen har avslutats.
public:
property bool HasExited { bool get(); };
[System.ComponentModel.Browsable(false)]
public bool HasExited { get; }
[<System.ComponentModel.Browsable(false)>]
member this.HasExited : bool
Public ReadOnly Property HasExited As Boolean
Egenskapsvärde
true om operativsystemet som refereras av komponenten Process har avslutats, falseannars .
- Attribut
Undantag
Det finns ingen process som är associerad med objektet.
Det gick inte att hämta slutkoden för processen.
Du försöker komma åt HasExited egenskapen för en process som körs på en fjärrdator. Den här egenskapen är endast tillgänglig för processer som körs på den lokala datorn.
Exempel
I följande exempel startas en instans av Anteckningar. Den hämtar sedan den fysiska minnesanvändningen för den associerade processen med 2 sekunders intervall i högst 10 sekunder. Exemplet identifierar om processen avslutas innan 10 sekunder har förflutit. Exemplet stänger processen om den fortfarande körs efter 10 sekunder.
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Threading;
namespace ProcessSample
{
class MyProcessClass
{
public static void Main()
{
try
{
using (Process 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}");
// 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) when (e is Win32Exception || e is FileNotFoundException)
{
Console.WriteLine("The following exception was raised: ");
Console.WriteLine(e.Message);
}
}
}
}
open System.ComponentModel
open System.Diagnostics
open System.IO
open System.Threading
try
use myProcess = Process.Start "Notepad.exe"
// Display physical memory usage 5 times at intervals of 2 seconds.
let mutable i = 0
while i < 5 && not myProcess.HasExited do
// Discard cached information about the process.
myProcess.Refresh()
// Print working set to console.
printfn $"Physical Memory Usage: {myProcess.WorkingSet64}"
// Wait 2 seconds.
Thread.Sleep 2000
i <- i + 1
// Close process by sending a close message to its main window.
myProcess.CloseMainWindow() |> ignore
// Free resources associated with process.
myProcess.Close()
with
| :? Win32Exception
| :? FileNotFoundException as e ->
printfn "The following exception was raised: "
printfn $"{e.Message}"
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.IO
Imports System.Threading
Namespace Process_Sample
Class MyProcessClass
Public Shared Sub Main()
Try
Using 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}")
' 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()
End Using
Catch e As Exception When TypeOf e Is Win32Exception Or TypeOf e Is FileNotFoundException
Console.WriteLine("The following exception was raised: ")
Console.WriteLine(e.Message)
End Try
End Sub
End Class
End Namespace 'Process_Sample
Kommentarer
Värdet true för för HasExited anger att den associerade processen har avslutats, antingen normalt eller onormalt. Du kan begära eller tvinga den associerade processen att avslutas genom att anropa CloseMainWindow eller Kill. Om ett handtag är öppet för processen släpper operativsystemet processminnet när processen har avslutats, men behåller administrativ information om processen, till exempel handtaget, slutkoden och sluttiden. Om du vill hämta den här informationen kan du använda ExitCode egenskaperna och ExitTime . Dessa egenskaper fylls i automatiskt för processer som startades av den här komponenten. Den administrativa informationen släpps när alla Process komponenter som är associerade med systemprocessen förstörs och inte innehåller fler referenser till den avslutade processen.
En process kan avslutas oberoende av din kod. Om du startade processen med den här komponenten uppdaterar systemet värdet för automatiskt, även om den associerade processen avslutas oberoende av HasExited varandra.
Anmärkning
När standardutdata har omdirigerats till asynkrona händelsehanterare är det möjligt att bearbetningen av utdata inte har slutförts när den här egenskapen returnerar true. För att säkerställa att asynkron händelsehantering har slutförts anropar du den WaitForExit() överlagring som inte tar någon parameter innan du kontrollerar HasExited.