【发布时间】:2014-02-12 16:48:52
【问题描述】:
我的应用程序设置为在单击通知气球提示时进入睡眠状态,并且此过程全部循环。这行得通,但是当我唤醒我的计算机时,它很快就会进入睡眠状态(这有一点时间延迟,但是由于这需要我的计算机进入睡眠状态所需的时间,所以我不会考虑这个)。我已经从我的整个程序中删除了这个 sn-p,然后程序运行得很好,让我觉得这段代码中有一些东西让计算机进入睡眠状态。此外,如果控制循环的标志之一被重置,我已经重置了这些标志,但问题一直在发生。万一(出于某种奇怪的原因)布尔运算符对其产生了影响,我已尽我所能更改了它们,但它仍然不起作用!我试过添加一个命令来防止计算机进入睡眠状态,但这也不起作用。有什么建议么?非常感激。
for (; ; )
{
bool for3 = false;
for (; ; )
{
notifyIcon.ShowBalloonTip(10000);
System.Threading.Thread.Sleep(10000);
Application.DoEvents();
if (loopVariable)
for3 = true;
if (for3) break;
System.Threading.Thread.Sleep(60000);
}
loopVariable = false;
for3 = false;
DateTime timeOnSleep = DateTime.Now;
Application.SetSuspendState(PowerState.Suspend, false, false);//this is the annoying code
DateTime timeOnWake = DateTime.Now;
TimeSpan time = timeOnWake - timeOnSleep;
var minutes = time.TotalMinutes;
Math.Round(time.TotalMinutes, MidpointRounding.AwayFromZero);
double dMins = minutes;
try
{
int iNumber = System.Convert.ToInt32(dMins);
}
catch (System.OverflowException)
{
if (dMins >= 40)
break;
}
}
private static bool loopVariable = false;
void notifyIcon_BalloonTipClicked(object sender, EventArgs e)
{
loopVariable = true;
}
【问题讨论】:
-
与其让我们阅读故障代码,不如在此处描述您要完成的工作。
-
我正在尝试在单击 notifyIcon 时让计算机进入睡眠状态(这有效),但是当我唤醒计算机时,它会在我仍在运行程序时再次进入睡眠状态。
-
这个奇怪的循环是怎么回事?
-
另外,您列出的代码是从哪里调用的?
-
如果我理解正确,您所指的循环是循环睡眠事件,按理说不应该发生。正如我上面所描述的,当我唤醒计算机时,它会不断地进入睡眠状态:这是不应该发生的事情。相反,它应该中断上面显示的第一个 for 循环,或者返回到该循环的开头。此代码在表单创建后立即调用,即在 InitializeComponent();