簡體   English   中英

如何啟動低優先級進程? C#

[英]How do I launch a process with low priority? C#

我想執行一個命令行工具來處理數據。 它不需要阻塞。 我希望它是低優先級的。 所以我寫了下面

 Process app = new Process();
 app.StartInfo.FileName = @"bin\convert.exe";
 app.StartInfo.Arguments = TheArgs;
 app.PriorityClass = ProcessPriorityClass.BelowNormal;
 app.Start();

但是,我收到System.InvalidOperationException消息“沒有進程與此 object 關聯”。 為什么? 如何以低優先級正確啟動此應用程序?

沒有行app.PriorityClass = ProcessPriorityClass.BelowNormal; 該應用程序運行良好。

嘗試在啟動該過程后設置 PriorityClass。 任務管理器以這種方式工作,允許您為已經運行的進程設置優先級。

您可以通過一些技巧來創建優先級較低的進程。 您降低父進程優先級,創建新進程,然后恢復為原始進程優先級:

var parent   = Process.GetCurrentProcess();
var original = parent.PriorityClass;

parent.PriorityClass = ProcessPriorityClass.Idle;
var child            = Process.Start("cmd.exe");
parent.PriorityClass = original;

child將在開始時具有Idle進程優先級。

如果您准備 P/Invoke 到CreateProcess ,則可以在標志中傳遞CREATE_SUSPENDED 然后您可以在恢復進程之前調整進程優先級。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM