How do I start a .NET process with idle priority?

前端 未结 2 846
执念已碎
执念已碎 2020-12-21 05:09

I\'m using System.Diagnostics.ProcessStartInfo to set up the parameters for launching a process from a .NET program. Once the the process is started, I can use



        
相关标签:
2条回答
  • 2020-12-21 05:57

    There is no provided API in the Process class to start a process with a different priority. The best option is to just set it immediately after starting the process. Once you start the process, you can set the Process.PriorityClass:

    var myProcess = Process.Start(...);
    myProcess.PriorityClass = ProcessPriorityClass.Idle;
    

    If you wish to prevent the process from running with a higher priority, darin's answer provides a workaround using P/Invoke and the Windows API. Even this starts the process with a normal priority, but if it's started in a suspended state, it will not run, so the priority would have no effect.

    0 讨论(0)
  • 2020-12-21 06:07

    Start the process suspended, then change the priority, and then resume the process. You do this with the CreateProcess Win32 function using the CREATE_SUSPENDED flag but unfortunately I am not sure if there's support in .NET for this and you might need to resort to P/Invoke.

    0 讨论(0)
提交回复
热议问题