Process.PriorityClass Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Dient zum Abrufen oder Festlegen der Allgemeinen Prioritätskategorie für den zugeordneten Prozess.
public:
property System::Diagnostics::ProcessPriorityClass PriorityClass { System::Diagnostics::ProcessPriorityClass get(); void set(System::Diagnostics::ProcessPriorityClass value); };
public System.Diagnostics.ProcessPriorityClass PriorityClass { get; set; }
member this.PriorityClass : System.Diagnostics.ProcessPriorityClass with get, set
Public Property PriorityClass As ProcessPriorityClass
Eigenschaftswert
Die Prioritätskategorie für den zugeordneten Prozess, aus der der BasePriority Prozess berechnet wird.
Ausnahmen
Prozessprioritätsinformationen konnten nicht festgelegt oder aus der zugeordneten Prozessressource abgerufen werden.
- oder -
Der Prozessbezeichner oder Prozesshandle ist null. (Der Prozess wurde nicht gestartet.)
Sie versuchen, auf die Eigenschaft für einen Prozess zuzugreifen, der PriorityClass auf einem Remotecomputer ausgeführt wird. Diese Eigenschaft ist nur für Prozesse verfügbar, die auf dem lokalen Computer ausgeführt werden.
Der Prozess Id ist nicht verfügbar.
Die Prioritätsklasse kann nicht festgelegt werden, da sie keinen gültigen Wert verwendet, wie in der ProcessPriorityClass Enumeration definiert.
Beispiele
Im folgenden Beispiel wird eine Instanz von Editor gestartet. Anschließend ruft das Beispiel verschiedene Eigenschaften des zugeordneten Prozesses ab und zeigt sie an. Das Beispiel erkennt, wann der Prozess beendet wird, und zeigt den Beendigungscode des Prozesses an.
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;
// Start the process.
using (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($"{myProcess} -");
Console.WriteLine("-------------------------------------");
Console.WriteLine($" Physical memory usage : {myProcess.WorkingSet64}");
Console.WriteLine($" Base priority : {myProcess.BasePriority}");
Console.WriteLine($" Priority class : {myProcess.PriorityClass}");
Console.WriteLine($" User processor time : {myProcess.UserProcessorTime}");
Console.WriteLine($" Privileged processor time : {myProcess.PrivilegedProcessorTime}");
Console.WriteLine($" Total processor time : {myProcess.TotalProcessorTime}");
Console.WriteLine($" Paged system memory size : {myProcess.PagedSystemMemorySize64}");
Console.WriteLine($" Paged memory size : {myProcess.PagedMemorySize64}");
// 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 : {myProcess.ExitCode}");
// Display peak memory statistics for the process.
Console.WriteLine($" Peak physical memory usage : {peakWorkingSet}");
Console.WriteLine($" Peak paged memory usage : {peakPagedMem}");
Console.WriteLine($" Peak virtual memory usage : {peakVirtualMem}");
}
}
}
}
open System.Diagnostics
// Define variables to track the peak
// memory usage of the process.
let mutable peakPagedMem = 0L
let mutable peakWorkingSet = 0L
let mutable peakVirtualMem = 0L
// Start the process.
use myProcess = Process.Start "NotePad.exe"
// Display the process statistics until
// the user closes the program.
while myProcess.WaitForExit 1000 |> not do
if not myProcess.HasExited then
// Refresh the current process property values.
myProcess.Refresh()
printfn ""
// Display current process statistics.
printfn $"{myProcess} -"
printfn "-------------------------------------"
printfn $" Physical memory usage : {myProcess.WorkingSet64}"
printfn $" Base priority : {myProcess.BasePriority}"
printfn $" Priority class : {myProcess.PriorityClass}"
printfn $" User processor time : {myProcess.UserProcessorTime}"
printfn $" Privileged processor time : {myProcess.PrivilegedProcessorTime}"
printfn $" Total processor time : {myProcess.TotalProcessorTime}"
printfn $" Paged system memory size : {myProcess.PagedSystemMemorySize64}"
printfn $" Paged memory size : {myProcess.PagedMemorySize64}"
// Update the values for the overall peak memory statistics.
peakPagedMem <- myProcess.PeakPagedMemorySize64
peakVirtualMem <- myProcess.PeakVirtualMemorySize64
peakWorkingSet <- myProcess.PeakWorkingSet64
if myProcess.Responding then
printfn "Status = Running"
else
printfn "Status = Not Responding"
printfn ""
printfn $" Process exit code : {myProcess.ExitCode}"
// Display peak memory statistics for the process.
printfn $" Peak physical memory usage : {peakWorkingSet}"
printfn $" Peak paged memory usage : {peakPagedMem}"
printfn $" Peak virtual memory usage : {peakVirtualMem}"
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
' Start the process.
Using 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($"{myProcess} -")
Console.WriteLine("-------------------------------------")
Console.WriteLine($" Physical memory usage : {myProcess.WorkingSet64}")
Console.WriteLine($" Base priority : {myProcess.BasePriority}")
Console.WriteLine($" Priority class : {myProcess.PriorityClass}")
Console.WriteLine($" User processor time : {myProcess.UserProcessorTime}")
Console.WriteLine($" Privileged processor time : {myProcess.PrivilegedProcessorTime}")
Console.WriteLine($" Total processor time : {myProcess.TotalProcessorTime}")
Console.WriteLine($" Paged system memory size : {myProcess.PagedSystemMemorySize64}")
Console.WriteLine($" Paged memory size : {myProcess.PagedMemorySize64}")
' 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 : {myProcess.ExitCode}")
' Display peak memory statistics for the process.
Console.WriteLine($" Peak physical memory usage of the process : {peakWorkingSet}")
Console.WriteLine($" Peak paged memory usage of the process : {peakPagedMem}")
Console.WriteLine($" Peak virtual memory usage of the process : {peakVirtualMem}")
End Using
End Sub
End Class
End Namespace
Hinweise
Der von dieser Eigenschaft zurückgegebene Wert stellt die zuletzt aktualisierte Priorität des Prozesses dar. Um die aktuellste Priorität zu erhalten, müssen Sie zuerst die Methode aufrufen Refresh() .
Eine Prozessprioritätsklasse umfasst einen Bereich von Threadprioritätsebenen. Threads mit unterschiedlichen Prioritäten, die im Prozess ausgeführt werden, werden relativ zur Prioritätsklasse des Prozesses ausgeführt. Win32 verwendet vier Prioritätsklassen mit sieben Basisprioritätsstufen pro Klasse. Diese Prozessprioritätsklassen werden in der ProcessPriorityClass Enumeration erfasst, mit der Sie die Prozesspriorität auf Idle, , Normal, High, , AboveNormal, BelowNormaloder .RealTime Basierend auf der verstrichenen Zeit oder anderen Verstärkungen kann die Basisprioritätsstufe vom Betriebssystem geändert werden, wenn ein Prozess vor anderen Personen für den Zugriff auf den Prozessor gestellt werden muss. Darüber hinaus können Sie festlegen, dass die PriorityBoostEnabled Prioritätsebene von Threads vorübergehend erhöht wird, die aus dem Wartezustand genommen wurden. Die Priorität wird zurückgesetzt, wenn der Prozess in den Wartezustand zurückkehrt.
Mit BasePriority der Eigenschaft können Sie die Anfangspriorität anzeigen, die einem Prozess zugewiesen ist. Da sie jedoch schreibgeschützt ist, können Sie die BasePriority Eigenschaft nicht verwenden, um die Priorität eines Prozesses festzulegen. Um die Priorität zu ändern, verwenden Sie die PriorityClass Eigenschaft, die die Allgemeine Prioritätskategorie für den Prozess abruft oder festlegt.
Die Prioritätsklasse kann nicht mithilfe des Systemmonitors angezeigt werden. Die folgende Tabelle zeigt die Beziehung zwischen den Werten und PriorityClass den BasePriority Werten.
| BasePriority | Priorityclass |
|---|---|
| 4 | Idle |
| 8 | Normal |
| 13 | High |
| 24 | RealTime |