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 (XBAP).