Share via


Application.DispatcherShutdownMode 속성

정의

스레드의 모든 XAML 창이 닫혀 있을 때 DispatcherQueue 이벤트 루프가 종료되는지 여부를 지정하는 값을 가져오거나 설정합니다.

public:
 property DispatcherShutdownMode DispatcherShutdownMode { DispatcherShutdownMode get(); void set(DispatcherShutdownMode value); };
DispatcherShutdownMode DispatcherShutdownMode();

void DispatcherShutdownMode(DispatcherShutdownMode value);
public DispatcherShutdownMode DispatcherShutdownMode { get; set; }
var dispatcherShutdownMode = application.dispatcherShutdownMode;
application.dispatcherShutdownMode = dispatcherShutdownMode;
Public Property DispatcherShutdownMode As DispatcherShutdownMode

속성 값

스레드의 모든 XAML 창이 닫혀 있을 때 DispatcherQueue 이벤트 루프가 종료되는지 여부를 지정하는 열거형 값입니다. 기본 동작은 비고를 참조하세요.

설명

스레드당 속성입니다. 설정하면 현재 스레드에 대해서만 속성이 변경됩니다. 애플리케이션의 다른 스레드에서 이 속성에 대해 서로 다른 값을 가질 수 있습니다.

언제든지 이 속성을 설정할 수 있습니다. XAML 런타임은 스레드의 마지막 창이 닫을 때마다 속성을 읽습니다.

Application.Start 메서드가 호출되면(WinUI Desktop 앱의 시작 시와 같이) XAML 런타임은 현재 스레드에 대해 를 로 OnLastWindowClose 설정합니다DispatcherShutdownMode. 이로 인해 스레드의 모든 XAML 창이 닫혀 있으면 DispatcherQueue의 이벤트 루프가 종료됩니다.

WinUI 데스크톱 앱에서는 스레드의 모든 XAML 창이 닫힌 후에도 코드를 계속 실행하려고 할 수 있습니다. 이렇게 하려면 이 속성을 OnExplicitShutdown로 설정할 수 있습니다. 그런 다음 모든 XAML 창이 닫힌 후 스레드가 계속 실행됩니다. 이 상태에서는 DispatcherQueue에서 작업을 예약하고, 다른 스레드에서 작업을 실행하고, 새 XAML 창을 표시할 수 있습니다.

애플리케이션에서 Application.Start 를 호출하지 않는 경우(일반적으로 XAML Islands 기반 애플리케이션의 경우와 같이) 이 속성은 기본적으로 입니다 OnExplicitShutdown. 이 상태에서 XAML 런타임은 XAML 창이 닫혀 있을 때 이벤트 루프를 종료하는 작업을 수행하지 않습니다.

를 사용하는 OnExplicitShutdown경우 해당 스레드에서 이벤트 루프를 종료할 준비가 되면 이벤트 루프를 직접 종료해야 합니다. 이벤트 루프를 제대로 종료하려면 DispatcherQueue.EnqueueEventLoopExit를 호출합니다. 또는 Application.Exit를 호출하여 XAML 런타임이 PostQuitMessage를 호출하도록 할 수도 있습니다.

적용 대상

추가 정보