程序不会停止睡觉的电脑

时间:2014-01-20 04:23:00

标签: c# sleep suspend

我的应用程序设置为在单击通知气球提示时进入休眠状态,并且此过程全部循环。这有效,但是当我唤醒我的电脑时,它很快就会进入睡眠状态(这有一点时间延迟,但是因为这需要我的计算机通常需要的时间才能进入睡眠状态,所以我不会考虑任何因素)。我已经从我的整个程序中删除了这个片段,然后程序运行得非常好,让我觉得这段代码中的某些内容会使计算机进入睡眠状态。此外,如果重置控制循环的其中一个标志,我会重置这些标志,但问题仍然存在。如果(由于一些奇怪的原因)布尔运算符正在影响它,我已经在所有组合中更改了它们,并且仍然不起作用!我已经尝试添加一个命令来防止计算机进入睡眠状态,但这也无效。有什么建议?非常感激。

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;
}

1 个答案:

答案 0 :(得分:0)

如果你发现自己在使用doevents,那么你可能会做错事。如果你需要运行这样的循环,请使用do {}而不是for (;;)。无论如何,你不需要这些东西。如果这不应该无限运行,您可以在调用Application.SetSuspendState之前禁用计时器。

    void Main()
    { 
        Timer timer = new Timer();
        timer.Tick += new EventHandler(timer_Tick);
        timer.Interval = 30000; //How often you want to show the tooltip?
        timer.Enabled = true;
    }

    void notifyIcon1_BalloonTipClicked(object sender, EventArgs e)
    {
        Application.SetSuspendState(PowerState.Suspend, false, false);
    }

    void timer_Tick(object sender, EventArgs e)
    {
        notifyIcon1.ShowBalloonTip(10000);
    }
相关问题