我试图执行以下代码来按优先级对正在运行的进程进行分组,并且在linq查询的group by子句中出现Win32异常(“访问被拒绝”)。我在VS2010中以管理员权限运行了此代码。
var processesList = Process.GetProcesses();
var processQuerySet = from process in processesList
group process by process.PriorityClass into priorityGroup
select priorityGroup;
foreach (var priority in processQuerySet)
{
Console.WriteLine(priority.Key.ToString());
foreach (var process in priority)
{
Console.WriteLine("\t{0} {1}", process.ProcessName, process.WorkingSet64);
}
}
最佳答案
您不能访问所有进程的PriorityClass。我会写
ProcessPriorityClass GetPriority(Process p)
{
try{
return p.PriorityClass;
}catch{
return (ProcessPriorityClass)0;
}
}
并称其为
group process by GetPriority(process) into priorityGroup