【问题标题】:Can you limit the processing resources that an application can use in .NET您能否限制应用程序在 .NET 中可以使用的处理资源
【发布时间】:2010-02-24 15:45:05
【问题描述】:

我想编写一个在后台运行的 .NET 应用程序(停留在任务栏中)并执行长时间操作,例如将文件文件夹从一个位置复制到另一个位置。我想以这样一种方式编写它,以使其他正在运行的应用程序不会减慢很多。我不在乎后台应用程序需要多长时间。有没有办法可以限制应用程序的处理/内存资源。我知道当您创建线程时,您可以将它们的优先级设置为不同的级别。将线程优先级设置为低会产生这种效果,还是它的优先级会低于属于同一应用程序的任何其他线程?

【问题讨论】:

    标签: .net resources process


    【解决方案1】:

    是的,您可以创建一个新的Thread 并在启动之前设置Priority 属性:

    Thread thread = new Thread(MethodToRun);
    thread.Priority = ThreadPriority.Lowest;
    thread.Start();
    

    【讨论】:

      【解决方案2】:

      如果您在 unix 中寻找具有 NICE 精度的东西,我不确定是否存在。但是您可以设置可能有帮助的进程的优先级。

      System.Diagnostics.Process.GetCurrentProcess().PriorityClass =System.Diagnostics.ProcessPriorityClass.Low;
      

      希望对您有所帮助。

      【讨论】:

      • 这与 Stevens 的建议有何不同?
      • Steven 的解决方案适用于每个线程,我的帖子是每个进程。如果我理解正确,通过设置优先级类,您进程中的所有线程都将相对于进程本身进行优先级排序。通过设置进程优先级,您可以将每个线程限制为该优先级。但是 Steven 的解决方案可能会更好,因为您可能想要那种有限的控制,而不是放弃一切的优先级。我也为他的解决方案 +1。
      • “Steven 的解决方案可能会更好”。你读过那个乔丹吗?将我标记为答案:-P
      猜你喜欢
      • 2012-01-18
      • 2021-10-24
      • 2019-03-05
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多