我正在使用C#编写基于Windows窗体的.NET应用程序。
我遇到了一个问题:如果我的程序在计算机进入睡眠和/或休眠状态时正在运行(我现在不确定是哪一个状态,或者两种状态都会导致问题),当计算机再次唤醒时,程序就会停止响应。唯一的退出方法是从任务管理器中结束该进程。
因为显而易见的原因,这并不是我想要程序运行的方式。即使当它进入这些状态时,我只是关闭程序,那也是可以的,但我不确定如何做到这一点,或者是否有更加优雅的处理方式。
我正在使用C#编写基于Windows窗体的.NET应用程序。
我遇到了一个问题:如果我的程序在计算机进入睡眠和/或休眠状态时正在运行(我现在不确定是哪一个状态,或者两种状态都会导致问题),当计算机再次唤醒时,程序就会停止响应。唯一的退出方法是从任务管理器中结束该进程。
因为显而易见的原因,这并不是我想要程序运行的方式。即使当它进入这些状态时,我只是关闭程序,那也是可以的,但我不确定如何做到这一点,或者是否有更加优雅的处理方式。
using Microsoft.Win32;
以下是代码:
void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
if(e.Mode == PowerModes.Suspend)
{
this.GracefullyHandleSleep();
}
}
处理这些事件可能是一个解决方法,但在应用这种解决方法之前,我会尝试找出操作系统进入休眠状态时应用程序正在做什么。
即使应用程序正在空闲,它是否会出现挂起的情况?
应用程序是否正在进行某种低级工作(与设备驱动程序或外部硬件通信),不应中断?
应用程序是否使用某种网络连接?