SystemEvents.SessionEnding Event
Assembly: System (in system.dll)
'Declaration Public Shared Event SessionEnding As SessionEndingEventHandler 'Usage Dim handler As SessionEndingEventHandler AddHandler SystemEvents.SessionEnding, handler
/** @event */ public static void add_SessionEnding (SessionEndingEventHandler value) /** @event */ public static void remove_SessionEnding (SessionEndingEventHandler value)
In JScript, you can handle the events defined by a class, but you cannot define your own.
Not applicable.
This is a cancelable event. Setting the Cancel property to false will request that the session continues to run. It provides no guarantee that the session will not end.
If you are using SessionEnding in a Windows form to detect a system logoff or reboot, there is no deterministic way to decide whether the Closing event will fire before this event.
If you want to perform some special tasks before Closing is fired, you need to ensure that SessionEnding fires before Closing. To do this, you need to trap the WM_QUERYENDSESSION in the form by overriding the WndProc function.
Important: |
|---|
| Console applications do not raise the SessionEnding event. |
Caution: |
|---|
| Because this is a static event, you must detach your event handlers when your application is disposed, or memory leaks will result. |
The following code example demonstrates how to trap the WM_QUERYENDSESSION in the form by overriding the WndProc function in a deterministic way.
Private Shared WM_QUERYENDSESSION As Integer = &H11 Private Shared systemShutdown As Boolean = False Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) If m.Msg = WM_QUERYENDSESSION Then MessageBox.Show("queryendsession: this is a logoff, shutdown, or reboot") systemShutdown = True End If ' If this is WM_QUERYENDSESSION, the closing event should be raised in the base WndProc. MyBase.WndProc(m) End Sub 'WndProc Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing If (systemShutdown) Then ' Reset the variable because the user might cancel the shutdown. systemShutdown = False If (System.Windows.Forms.DialogResult.Yes = _ MessageBox.Show("My application", "Do you want to save your work before logging off?", MessageBoxButtons.YesNo)) Then e.Cancel = True Else e.Cancel = False End If End If End Sub
Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.
Important: