이 설명서는 보관되지만 유지 되지 않습니다.

Dispatcher 클래스

업데이트: 2008년 7월

스레드에 대한 작업 항목 큐를 관리하는 서비스를 제공합니다.

네임스페이스:  System.Windows.Threading
어셈블리:  WindowsBase(WindowsBase.dll)

public sealed class Dispatcher
public final class Dispatcher
public final class Dispatcher
이 클래스의 인스턴스는 XAML에서 직접 만들 수 없습니다.

Dispatcher는 특정 스레드에 대해 우선 순위가 지정된 작업 항목 큐를 관리합니다.

스레드에서 만들어진 DispatcherDispatcher가 종료되더라도 스레드에 연결할 수 있는 유일한 Dispatcher가 됩니다.

현재 스레드에 대한 CurrentDispatcher를 가져오려고 하는데 Dispatcher가 스레드에 연결되어 있지 않은 경우 Dispatcher가 만들어집니다.

Dispatcher가 종료되면 다시 시작할 수 없습니다.

WPF에서 DispatcherObject는 연결된 Dispatcher에서만 액세스할 수 있습니다. 예를 들어 백그라운드 스레드는 UI 스레드의 Dispatcher에 연결된 Button의 내용을 업데이트할 수 없습니다. 백그라운드 스레드에서 ButtonContent 속성에 액세스할 수 있도록 하려면 백그라운드 스레드에서 UI 스레드에 연결된 Dispatcher에 작업을 위임해야 합니다. 이 작업은 Invoke 또는 BeginInvoke를 사용하여 수행할 수 있습니다. Invoke는 동기적이고 BeginInvoke는 비동기적입니다. 작업은 지정된 DispatcherPriorityDispatcher 큐에 추가됩니다.

BeginInvoke가 종료된 Dispatcher에 대해 호출되는 경우 반환되는 DispatcherOperation의 상태 속성은 Aborted로 설정됩니다.

DisableProcessing을 제외하고 Dispatcher의 모든 메서드는 자유 스레드됩니다.

DispatcherObject에서 파생되는 개체에는 스레드 선호도가 있습니다.

Freezable에서 파생되는 개체는 고정될 때 자유 스레드됩니다. 자세한 내용은 Freezable 개체 개요를 참조하십시오.

다음 예제에서는 Dispatcher에 작업을 배치하는 방법을 보여 줍니다. 이 예제의 전체 소스 코드를 보려면 장기 실행 계산 기능이 있는 단일 스레드 응용 프로그램 샘플을 참조하십시오.

먼저 인수가 없는 대리자를 만듭니다.

public delegate void NextPrimeDelegate();


다음으로 BeginInvoke(DispatcherPriority, Delegate)를 호출합니다. BeginInvoke(DispatcherPriority, Delegate)를 호출할 때는 DispatcherPriority.Normal로 설정되는 우선 순위와 대리자 NextPrimeDelegate의 인스턴스를 통해 전달되는 콜백에 해당하는 매개 변수 두 개를 사용합니다.

startStopButton.Dispatcher.BeginInvoke(
    DispatcherPriority.Normal,
    new NextPrimeDelegate(CheckNextNumber));


System.Object
  System.Windows.Threading.Dispatcher

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

Windows Vista

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

.NET Framework

3.5, 3.0에서 지원
표시: