Rajesh Pawde
Rajesh Pawde

Reputation: 399

How to do a set of tasks before system goes for sleep in c#

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

Answers (1)

Gehan Fernando
Gehan Fernando

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

Related Questions