Reputation: 399
I want to save some users work before system goes for sleep so after making some research I came to know about SystemEvents.PowerModeChanged but with this event my program is not completing the saving users work and before that only system is going for sleep.So how should I handle this scenario ?
Upvotes: 3
Views: 418
Reputation: 1267
ManagementEventWatcher eventWatcher = new System.Management.ManagementEventWatcher();
WqlEventQuery query = new WqlEventQuery("Win32_PowerManagementEvent"); //catch power change events
eventWatcher.Query = query;
eventWatcher.EventArrived += new System.Management.EventArrivedEventHandler(eventWatcher_EventArrived); // rgister the event handler
eventWatcher.Start(); // start the event watcher
Handler:
void eventWatcher_EventArrived(object sender, System.Management.EventArrivedEventArgs e)
{
int eventType = Convert.ToInt32(e.NewEvent.Properties["EventType"].Value);
switch (eventType)
{
case 4://sleep
break;
case 7://resume
break;
}
}
Note: Do not forget to stop watcher when your program exits.
if(eventWatcher != null)
eventWatcher.Stop();
More Details ...
http://cmehmet6parmak.wordpress.com/2011/06/14/catch-computer-sleep-event-c-windows-7/
Upvotes: 1