내보내기(0) 인쇄
모두 확장

Application.SessionEnding 이벤트

업데이트: 2007년 11월

사용자가 로그오프하거나 운영 체제를 종료하여 Windows 세션을 끝낼 때 발생합니다.

네임스페이스:  System.Windows
어셈블리:  PresentationFramework(PresentationFramework.dll)
XAML의 XMLNS: http://schemas.microsoft.com/winfx/xaml/presentation

public event SessionEndingCancelEventHandler SessionEnding
/** @event */
public void add_SessionEnding (SessionEndingCancelEventHandler value)
/** @event */
public void remove_SessionEnding (SessionEndingCancelEventHandler value)

JScript에서는 이벤트를 지원하지 않습니다.
<object SessionEnding="SessionEndingCancelEventHandler" .../>

기본적으로 응용 프로그램은 사용자가 로그오프하거나 시스템을 종료하여 Windows 세션을 끝낼 때 종료됩니다. 이 경우 Windows에서 열려 있는 각 응용 프로그램을 종료할지 확인합니다. 그러나 이때 응용 프로그램을 종료할 수 없는 경우도 있습니다. 예를 들어 응용 프로그램에 상태가 일치하지 않는 데이터가 있거나 장기 실행 작업을 수행 중일 수 있습니다. 이 경우 세션을 끝내지 않는 것이 좋으며, 사용자가 세션을 끝낼지 여부를 결정하게 하는 것이 더 좋습니다.

SessionEnding 이벤트를 처리하여 세션이 끝나는 시기를 감지할 수 있습니다. 응용 프로그램에서 세션을 끝내지 않아야 하는 경우 이벤트 처리기로 전달된 SessionEndingCancelEventArgs 인수가 true(기본값은 false임)로 설정된 Cancel을 노출합니다.

SessionEnding이 처리되지 않은 경우 또는 취소하지 않고 처리된 경우 Shutdown이 호출되고 Exit 이벤트가 발생합니다.

세션이 끝나는 이유에 대한 추가 정보를 얻기 위해 응용 프로그램에서 ReasonSessionEnding을 검사할 수 있습니다. 해당 값은 ReasonSessionEnding 값(LogoffShutdown) 중 하나입니다.

SessionEnding은 콘솔 응용 프로그램에서 발생하지 않습니다.

SessionEndingApplication 개체를 만드는 스레드에서만 발생합니다.

XBAP(XAML 브라우저 응용 프로그램)에 대해서는 SessionEnding이 발생하지 않습니다.

다음 예제에서는 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; // Application, SessionEndingCancelEventArgs, MessageBox, MessageBoxResult, MessageBoxButton

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;
            }
        }
    }
}


Windows Vista

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0에서 지원

커뮤니티 추가 항목

추가
표시:
© 2015 Microsoft