Application.SessionEnding Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит, когда пользователь завершает сеанс Windows путем выхода из системы или завершения работы операционной системы.
public:
event System::Windows::SessionEndingCancelEventHandler ^ SessionEnding;
public event System.Windows.SessionEndingCancelEventHandler SessionEnding;
member this.SessionEnding : System.Windows.SessionEndingCancelEventHandler
Public Custom Event SessionEnding As SessionEndingCancelEventHandler
Тип события
Примеры
В следующем примере показано, как обработать SessionEnding событие и разрешить пользователю отменить его.
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.App"
StartupUri="MainWindow.xaml"
SessionEnding="App_SessionEnding" />
using System.Windows;
namespace SDKSample
{
public partial class App : Application
{
void App_SessionEnding(object sender, SessionEndingCancelEventArgs e)
{
// Ask the user if they want to allow the session to end
string msg = string.Format("{0}. End session?", e.ReasonSessionEnding);
MessageBoxResult result = MessageBox.Show(msg, "Session Ending", MessageBoxButton.YesNo);
// End session, if specified
if (result == MessageBoxResult.No)
{
e.Cancel = true;
}
}
}
}
Imports System.Windows
Namespace SDKSample
Partial Public Class App
Inherits Application
Private Sub App_SessionEnding(ByVal sender As Object, ByVal e As SessionEndingCancelEventArgs)
' Ask the user if they want to allow the session to end
Dim msg As String = String.Format("{0}. End session?", e.ReasonSessionEnding)
Dim result As MessageBoxResult = MessageBox.Show(msg, "Session Ending", MessageBoxButton.YesNo)
' End session, if specified
If result = MessageBoxResult.No Then
e.Cancel = True
End If
End Sub
End Class
End Namespace
Комментарии
По умолчанию приложение завершает работу при завершении сеанса Windows, что происходит при отключении или завершении работы пользователя. В этом случае Windows просит каждое открытое приложение завершить работу. Тем не менее, возможно, что приложение может не быть готово к закрытию, когда это происходит. Например, приложение может иметь данные, которые имеют несогласованное состояние или в середине длительной операции. В таких ситуациях может потребоваться предотвратить завершение сеанса и может оказаться более желательным разрешить пользователям решить, следует ли разрешить сеансу завершиться.
Вы можете определить, когда сеанс заканчивается, обрабатывая SessionEnding событие. Если приложению необходимо предотвратить завершение сеанса, аргумент, передаваемый обработчику событий, SessionEndingCancelEventArgs предоставляет Cancel заданный параметр true (значение falseпо умолчанию — ).
Если SessionEnding необработанные или обрабатываются без отмены, Shutdown вызывается и Exit вызывается событие.
Чтобы получить дополнительные сведения о том, почему сеанс заканчивается, приложение может проверить ReasonSessionEnding, что является одним из ReasonSessionEnding значений (ReasonSessionEnding.Logoff и ReasonSessionEnding.Shutdown).
SessionEnding не вызывается консольными приложениями.
SessionEnding вызывается только в потоке, создающего Application объект.
SessionEnding не вызывается для приложений браузера XAML (XBAPs).