17

我正在使用 C# 在 .net 中编写一个 Windows 窗体应用程序。

我遇到了一个问题,如果我的程序在计算机进入睡眠和/或休眠状态时正在运行(我目前不确定是哪一个或两者都导致了问题),那么当机器再次唤醒时该程序只是挂起。退出它的唯一方法是从任务管理器中终止进程。

出于显而易见的原因,这不是我希望程序运行的方式。即使我只是在程序进入这些状态时将其关闭,那也没关系,但我不太确定如何执行此操作,或者是否有更优雅的方式来处理此问题。

4

3 回答 3

9

你需要:

using Microsoft.Win32;   

这是代码:

 void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
    {
        if(e.Mode == PowerModes.Suspend)
        {
            this.GracefullyHandleSleep();
        }
    }

这就是我一起去的。

于 2010-08-16T19:25:55.380 回答
6

处理这些事件可能是一种解决方法。但是在应用这种解决方法之前,我会尝试弄清楚当操作系统进入休眠状态时应用程序在做什么。

尽管应用程序只是空闲,但发生挂起?

应用程序是否正在执行某种不应中断的低级工作(与设备驱动程序或外部硬件的通信)?

应用程序是否使用某种网络连接?

于 2010-08-06T16:27:10.447 回答
2

本文介绍了监听这些事件。您必须执行诸如覆盖WndProc并侦听 PBT_APMSUSPEND 事件之类的操作。

于 2010-08-06T15:56:57.343 回答