我的应用程序正在对后台线程设置为最高线程优先级的CSV文件进行一些简单的读取和处理。但是,我注意到,当应用程序不是活动窗口时,该过程将大大减慢速度。即使打开记事本,阅读过程也会慢大约10倍,而当我单击返回到应用程序时,它的速度会恢复到正常速度。
有什么方法可以防止减速的发生?我以为使用ThreadPriority可以达到此目的,但似乎没有达到预期的效果。
尝试了以下方法:
Thread.CurrentThread.Priority = ThreadPriority.Highest;
System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.RealTime;
System.Diagnostics.Process.GetCurrentProcess().ProcessorAffinity = (IntPtr)0x0002;
答案 0 :(得分:1)
这可能与操作系统的调度程序的行为有关。它们倾向于使用活动窗口来增加进程的优先级,从而增加用户体验,从而降低所有其他进程的优先级。
增加线程优先级不起作用,因为此行为与进程有关,因此您可以尝试提高进程的优先级。
如果这还不能满足您的需求,您可以尝试为该进程提供一个单独的cpu内核。