我写了一个C#程序,它在后台运行得非常完美,但是如果机器被锁定并且单独留下它会减慢速度 .
它每100毫秒打开和关闭一个板载LED,100毫秒由“System.Threading.Thread.Sleep(100)”调用计时 . (这适用于需要闪烁以指示各种状态的无头系统(无键盘或显示器) . )
当系统单独停留一段时间并且桌面锁定时会出现问题...闪烁停止...但是如果我回到机器并登录(现在它不是无头)则LED开始上升并且再次以全速闪烁 .
我怀疑Windows可能会采用某种电源管理方案,并减慢流程以节省电量(?) .
为了清楚起见,设备永远不会进入“睡眠”或“休眠”状态,只要我重新登录并将鼠标移动一秒钟,该过程就会恢复正常的节奏...此过程正在运行使用管理员权限登录的用户 .
绝对没有这台机器上的防病毒软件 . 使用的资源(内存/ CPU)很小,前后基本相同 .
有没有人知道如何构建或执行C#进程,即使用户已经锁定桌面并走了几个小时,它仍然以正常速度运行?
编辑:包含循环的示例代码:
while (true) {
foreach (var step in steps)
{
var mode = step.Mode;
var millis = step.Millis;
switch (mode.ToUpper())
{
//Set LED as per Mode Switch
}
System.Threading.Thread.Sleep(millis);
}
if (!loopForever) {
//User wanted single pattern and then exit
Environment.Exit(0);
}
}
1 回答
我们通过使用以下方法解决了WPF应用程序上的这类问题:
我希望它可以帮到你 . 这里更多documentation