已编辑:最初陈述了两个问题,自己测试了一个并得到了答案。
我正在创建一个线程读取器/写入器,它查看文件夹集中的文件。它每 5 分钟执行一次,如果用户指定它则更少。
我当前的问题是线程会以有点贪婪的方式查看文件。我想将线程限制为最多使用 CPU 的 30%(或用户指定的数量,以防他们想要更快/更慢)。这样做的原因是这是一个应该始终打开的程序,我不希望它干扰他们浏览互联网或同时使用其他程序。我个人倾向于注意到使用 100% CPU 的线程程序与其他程序一起使用,即使它们被设置为较低的优先级,并且我试图避免这种情况。
我正在考虑使用 PerformanceCounter 来检查 CPU 使用率,希望能识别程序,并在性能(整个 CPU 或我的程序发现它)开始达到峰值时添加更多的睡眠周期。我没有找到任何关于限制线程 CPU 使用率的文档,除了“大声笑,为什么要打扰?”,“不太可行”,没有任何理由(这完全没问题 - 大多数人希望线程尽快完成,可能没有.Net 或其他 C# 库固有的方法)。
有没有人知道除了设置它的优先级较低或通过使用 PerformanceCounter/其他一些 CPU 监视器增加更多开销之外的方法?谢谢。