C# 在流程启动之前为其分配优先级

C# 在流程启动之前为其分配优先级,c#,C#,我有一个特定数量的进程(C#.exe)应该启动。如何根据它们的优先级启动它们 我知道Process.PriorityClass的东西,但它并没有真正的用处,因为它只在流程启动后分配优先级 我这里有这段代码(还没有比较优先级),但它不起作用,因为进程没有运行,所以我无法为它们分配优先级: Process process1 = new Process(); Process process2 = new Process(); Process process3 = new Process();

我有一个特定数量的进程(C#.exe)应该启动。如何根据它们的优先级启动它们

我知道Process.PriorityClass的东西,但它并没有真正的用处,因为它只在流程启动后分配优先级

我这里有这段代码(还没有比较优先级),但它不起作用,因为进程没有运行,所以我无法为它们分配优先级:

Process process1 = new Process();    
Process process2 = new Process();
Process process3 = new Process();

process1.StartInfo.FileName = "proc1";

process2.StartInfo.FileName = "proc2"'

process3.StartInfo.FileName = "proc3";

process1.PriorityClass = ProcessPriorityClass.AboveNormal;

process2.PriorityClass = ProcessPriorityClass.BelowNormal;

process3.PriorityClass = ProcessPriorityClass.High;

process2.Start();

process2.WaitForExit();

process1.Start();

process1.WaitForExit();

process3.Start();

您可以使用流程文件名创建一个字典,然后使用Linq查询按ProcessPriorityClass和OrderBy对它们进行排序。然后,您只需执行它们,迭代列表,并为值分配正确的优先级

public void StartProcessesByPriority(Dictionary<String, ProcessPriorityClass> values)
{
    List<KeyValuePair<String, ProcessPriorityClass>> valuesList = values.ToList();

    valuesList.Sort
    (
        delegate(KeyValuePair<String, ProcessPriorityClass> left, KeyValuePair<String, ProcessPriorityClass> right)
        {
            return left.Value.CompareTo(right.Value);
        }
    );

    foreach (KeyValuePair<String, ProcessPriorityClass> pair in valuesList)
    {
        Process process = new Process();
        process.StartInfo.FileName = pair.Key;
        process.Start();

        process.PriorityClass = pair.Value;

        process.WaitForExit();
    }
}
public void startProcessByPriority(字典值)
{
列表值列表=values.ToList();
估价员,分类
(
代理(KeyValuePair左侧、KeyValuePair右侧)
{
返回left.Value.CompareTo(right.Value);
}
);
foreach(valuesList中的KeyValuePair对)
{
流程=新流程();
process.StartInfo.FileName=pair.Key;
process.Start();
process.PriorityClass=pair.Value;
process.WaitForExit();
}
}

到底是什么问题?什么没有运行?它说优先级类没有对象。但是,如果我在启动流程后设置优先级,它就会起作用。但是我不能按优先级启动它们。我如何初始化列表?手动,就像你的代码那样。例如mydictionary.Add(“proc1”,ProcessPriorityClass.overnormal)等等,然后在需要时调用该方法。最重要的是。。。优先级只能分配给正在运行的进程。你以前不能分配。好吧,我现在就试试,谢谢。我要死在这里!!这个项目毫无逻辑可言