更改线程优先级以使我的程序和计算机更具响应性

Eri*_*tas 8 .net c# multithreading thread-priority

我编写了一个.NET winforms应用程序,它使用辅助线程进行一些繁重的处理,将其进程传回UI线程.一切正常,表单显示进度,我还创建了一个取消按钮来中断处理线程.但是,当耗时的过程进入应用程序时,我的整个计算机都会慢下来.拖动窗口需要很长时间,并且在尝试在记事本中键入字母时甚至会有明显的延迟.

我假设我需要降低处理线程的优先级,和/或增加UI线程的优先级.这是正确的吗?现在两个线程都是普通优先级.

这跟下面一样容易吗?或者我还应该做些什么呢?

Thread.CurrentThread.Priority = ThreadPriority.AboveNormal;
Run Code Online (Sandbox Code Playgroud)

我该如何改变优先顺序?我应该降低处理的优先级,还是提高UI的优先级,或两者兼而有之?到了什么环境?高于正常还是最高?

Gra*_*rdx 5

我不一定认为线程优先级是你的问题(虽然它可能是它的一部分).看看这个SO问题:后台工作者线程优先级.

在后台线程中可能过于紧密的循环会在该线程上保持cpu时间.有几种方法可以将它从残酷的(线程睡眠)修复到更合理的(互斥和事件).

您还可以尝试分析后台线程(直接或在测试工具中)以查看它花费大部分时间的位置,并尝试使用异步事件或类似的卸载技术来隔离它.


Jer*_*fin 0

您通常希望保留主线程的优先级,并将处理线程的优先级降低到空闲。