Любой подобный вопрос нужно решать, начиная с того, как это нативный API делается:
https://docs.microsoft.com/en-us/windows/win32/api...
А вот как вызывать подобные нативные функции:
https://docs.microsoft.com/en-us/dotnet/standard/n...
Таким образом, можно сделать вот так:
[DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern bool SetPriorityClass(IntPtr handle, PriorityClass priorityClass);
public enum PriorityClass : uint
{
ABOVE_NORMAL_PRIORITY_CLASS = 0x8000,
BELOW_NORMAL_PRIORITY_CLASS = 0x4000,
HIGH_PRIORITY_CLASS = 0x80,
IDLE_PRIORITY_CLASS = 0x40,
NORMAL_PRIORITY_CLASS = 0x20,
PROCESS_MODE_BACKGROUND_BEGIN = 0x100000,// 'Windows Vista/2008 and higher
PROCESS_MODE_BACKGROUND_END = 0x200000,// 'Windows Vista/2008 and higher
REALTIME_PRIORITY_CLASS = 0x100
}
public static bool SetProcessPriority(Process process, PriorityClass priorityClass) =>
SetPriorityClass(process.Handle, priorityClass);
Но так делать не нужно, тк есть свойство
Process.PriorityClass
Через него можно так:
public static void SetProcessPriority(Process process, ProcessPriorityClass priorityClass) =>
process.PriorityClass = priorityClass;