首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何启动低优先级的进程?C#

如何启动低优先级的进程?C#
EN

Stack Overflow用户
提问于 2009-06-18 01:34:38
回答 3查看 16.6K关注 0票数 40

我想执行一个命令行工具来处理数据。它不需要被阻塞。我希望它是低优先级的。所以我写了下面的内容

代码语言:javascript
复制
 Process app = new Process();
 app.StartInfo.FileName = @"bin\convert.exe";
 app.StartInfo.Arguments = TheArgs;
 app.PriorityClass = ProcessPriorityClass.BelowNormal;
 app.Start();

但是,我得到一个System.InvalidOperationException,其中显示消息“没有进程与此对象相关联”。为什么?如何以低优先级正确启动此应用程序?

如果没有app.PriorityClass = ProcessPriorityClass.BelowNormal;这行代码,应用程序就可以正常运行。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-18 01:37:38

尝试在启动该进程后设置PriorityClass。任务管理器以这种方式工作,允许您在已经运行的进程上设置优先级。

票数 52
EN

Stack Overflow用户

发布于 2015-10-16 05:07:00

你可以通过一些hack来创建一个优先级较低的进程。降低父进程优先级,创建新进程,然后恢复到原始进程优先级:

代码语言:javascript
复制
var parent   = Process.GetCurrentProcess();
var original = parent.PriorityClass;

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

child将在一开始就具有Idle进程的优先级。

票数 13
EN

Stack Overflow用户

发布于 2011-09-29 23:46:38

如果您准备对CreateProcess执行P/Invoke,则可以在标志中传递CREATE_SUSPENDED。然后,您可以在恢复进程之前调整进程优先级。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1010370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档