Process.PriorityClass Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee haalt u de algemene prioriteitscategorie voor het bijbehorende proces op of stelt u deze in.
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
Waarde van eigenschap
De prioriteitscategorie voor het bijbehorende proces, waaruit het BasePriority proces wordt berekend.
Uitzonderingen
Informatie over de prioriteit van processen kan niet worden ingesteld of opgehaald uit de bijbehorende procesresource.
– of –
De proces-id of procesgreep is nul. (Het proces is niet gestart.)
U probeert toegang te krijgen tot de PriorityClass eigenschap voor een proces dat wordt uitgevoerd op een externe computer. Deze eigenschap is alleen beschikbaar voor processen die worden uitgevoerd op de lokale computer.
Het proces Id is niet beschikbaar.
Prioriteitsklasse kan niet worden ingesteld omdat er geen geldige waarde wordt gebruikt, zoals gedefinieerd in de ProcessPriorityClass opsomming.
Voorbeelden
In het volgende voorbeeld wordt een exemplaar van Kladblok gestart. In het voorbeeld worden vervolgens verschillende eigenschappen van het bijbehorende proces opgehaald en weergegeven. In het voorbeeld wordt gedetecteerd wanneer het proces wordt afgesloten en wordt de afsluitcode van het proces weergegeven.
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
Opmerkingen
De waarde die door deze eigenschap wordt geretourneerd, vertegenwoordigt de meest recent vernieuwde prioriteit van het proces. Als u de meest recente prioriteit wilt krijgen, moet u eerst de methode aanroepen Refresh() .
Een klasse met procesprioriteit omvat een reeks threadprioriteitsniveaus. Threads met verschillende prioriteiten die in het proces worden uitgevoerd ten opzichte van de prioriteitsklasse van het proces. Win32 gebruikt vier prioriteitsklassen met zeven basisprioriteitsniveaus per klasse. Deze klassen met procesprioriteit worden vastgelegd in de ProcessPriorityClass opsomming, waarmee u de prioriteit Idlevan het proces kunt instellen op , Normal, High, AboveNormal, , of BelowNormalRealTime. Op basis van de tijd die is verstreken of andere boosts, kan het niveau van de basisprioriteit worden gewijzigd door het besturingssysteem wanneer een proces voor anderen moet worden geplaatst voor toegang tot de processor. Daarnaast kunt u instellen dat het PriorityBoostEnabled prioriteitsniveau van threads die uit de wachtstatus zijn gehaald, tijdelijk wordt verhoogd. De prioriteit wordt opnieuw ingesteld wanneer het proces terugkeert naar de wachtstatus.
Met BasePriority de eigenschap kunt u de beginprioriteit bekijken die aan een proces is toegewezen. Omdat het echter alleen-lezen is, kunt u de BasePriority eigenschap niet gebruiken om de prioriteit van een proces in te stellen. Als u de prioriteit wilt wijzigen, gebruikt u de PriorityClass eigenschap, waarmee de algemene prioriteitscategorie voor het proces wordt ophaalt of ingesteld.
De prioriteitsklasse kan niet worden weergegeven met System Monitor. In de volgende tabel ziet u de relatie tussen de BasePriority en PriorityClass waarden.
| BasePriority | PriorityClass |
|---|---|
| 4 | Idle |
| 8 | Normal |
| 13 | High |
| 24 | RealTime |