改变线程.优先使程序更具响应性
本文关键字:响应 程序 线程 改变 | 更新日期: 2023-09-27 18:03:59
我写了一个。net winforms应用程序,它做了一些繁重的处理,使我的计算机速度变慢了很多。我读过一些关于
Thread.CurrentThread.Priority
但是我真的不明白我是否应该给主线程更多的优先级,或者降低它的优先级,以消除"滞后"和我的计算机变慢。
谢谢。
这完全取决于您的应用程序和任何其他线程正在做什么。你不应该真的提高你的UI线程优先级,但是你可以降低任何后台线程优先级。
为了保持UI的响应性,不要在该线程上做任何繁重的处理——在后台线程上做这些工作。
这可能有点模糊,但如果你的问题是。如果可以的话,我也很乐意透露更多细节。
是的,它会解决你的问题。设置为ThreadPriority。低于正常(或最低)和由机器上的其他进程启动的任何线程都将在工作线程之前被调度。它显著地使您使用的任何程序的交互响应更快。结果是,当另一个进程正在消耗cpu时,您的工作线程可能会耗尽cpu时间。它仍然会偶尔运行,只是不经常。
一般来说,避免启动比cpu内核数量更多的线程。Environment.ProcessorCount。线程池调度器已经自动完成了这个任务,但是它并不关注其他进程。
如果您正在经历普遍的"变慢"answers"滞后",那么提高任何单个线程的优先级只会使事情变得更糟。
这完全取决于你的应用程序的结构,但如果你有一些繁重的处理正在进行,它使用了足够的处理器时间对系统的其余部分产生负面影响,那么你有两个主要的选择:
- 降低处理线程的优先级,以便系统其他部分的活动具有优先级。
- 在处理线程中引入人工中断。通常,这是通过定期将线程发送到睡眠状态或让位给其他线程或事件循环来完成的。
您应该只在系统中需要更高优先级的线程上增加优先级,而不仅仅是因为它们运行缓慢。优先级意味着你的线程应该被认为比其他线程更重要。在这种情况下,我认为情况并非如此。
如果您降低优先级,那么您可能会发现它似乎运行得更慢,因为其他任务可能占用处理时间。
您需要做的是减轻您的处理,可能添加线程(或更多线程),或者考虑如何以其他方式改进处理。优先级不是答案