Dispatcher 클래스

정의

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

public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
상속
Dispatcher

예제

다음 예제에서는 작업을 .에 Dispatcher배치하는 방법을 보여줍니다. 이 예제의 전체 소스 코드를 보려면 장기 실행 계산 샘플을 사용 하 여 단일 스레드 애플리케이션합니다.

먼저 인수를 허용하지 않는 대리자가 만들어집니다.

public delegate void NextPrimeDelegate();
Public Delegate Sub NextPrimeDelegate()

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

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

설명

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

스레드에서 Dispatcher 생성되는 경우 스레드가 종료되더라도 Dispatcher 스레드와 연결할 수 있는 유일한 Dispatcher 스레드가 됩니다.

현재 스레드에 CurrentDispatcher 대한 가져오기를 시도하고 스레드 Dispatcher 와 연결되지 않은 경우 a가 Dispatcher 만들어집니다. A Dispatcher 는 만들 때도 만들어 DispatcherObject집니다. 백그라운드 스레드에서 만드는 경우 스레드를 Dispatcher 종료하기 전에 디스패처를 종료해야 합니다.

종료 Dispatcher 된 경우 다시 시작할 수 없습니다.

WPF DispatcherObject 에서는 연결된 사용자만 액세스할 Dispatcher 수 있습니다. 예를 들어 백그라운드 스레드는 UI 스레드에 연결된 Dispatcher 콘텐츠를 Button 업데이트할 수 없습니다. 백그라운드 스레드가 속성Button에 액세스 Content 하려면 백그라운드 스레드가 UI 스레드와 연결된 작업에 작업을 Dispatcher 위임해야 합니다. 이 작업은 둘 중 하나 Invoke 또는 BeginInvoke을 사용하여 수행됩니다. Invoke 는 동기적이며 BeginInvoke 비동기적입니다. 작업은 지정된 큐에 Dispatcher 추가됩니다 DispatcherPriority.

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

예외를 제외하고 DisableProcessing모든 메서드Dispatcher는 자유 스레드입니다.

파생 된 개체 DispatcherObject 스레드 선호도 있습니다.

파생 된 개체 Freezable 는 자유 스레드는 고정 되어 있는 경우. 자세한 내용은 Freezable 개체 개요를 참조하세요.

속성

CurrentDispatcher

스레드에 연결된 Dispatcher가 없는 경우 현재 실행 중인 스레드에 대한 Dispatcher를 가져와서 새 Dispatcher를 만듭니다.

HasShutdownFinished

Dispatcher가 완전히 종료되었는지 여부를 확인합니다.

HasShutdownStarted

Dispatcher가 종료되었는지 여부를 확인합니다.

Hooks

Dispatcher에 대한 추가 이벤트 정보를 제공하는 후크 컬렉션을 가져옵니다.

Thread

Dispatcher가 연결된 스레드를 가져옵니다.

메서드

BeginInvoke(Delegate, DispatcherPriority, Object[])

Dispatcher가 만들어진 스레드에서 지정된 우선 순위에 지정된 인수를 사용하여 지정된 대리자를 비동기적으로 실행합니다.

BeginInvoke(Delegate, Object[])

Dispatcher가 만들어진 스레드에서 지정된 인수를 사용하여 지정된 대리자를 비동기적으로 실행합니다.

BeginInvoke(DispatcherPriority, Delegate)

Dispatcher가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 대리자를 비동기적으로 실행합니다.

BeginInvoke(DispatcherPriority, Delegate, Object)

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 비동기적으로 실행합니다.

BeginInvoke(DispatcherPriority, Delegate, Object, Object[])

Dispatcher가 연결된 스레드에서 지정된 인수 배열을 사용하여 지정된 우선 순위에 있는 지정된 대리자를 비동기적으로 실행합니다.

BeginInvokeShutdown(DispatcherPriority)

비동기적으로 Dispatcher 종료를 시작합니다.

CheckAccess()

호출 스레드가 이 Dispatcher에 연결된 스레드인지 여부를 확인합니다.

DisableProcessing()

Dispatcher 큐 프로세스를 비활성화합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
ExitAllFrames()

중첩된 프레임을 포함하여 모든 프레임을 종료하도록 요청합니다.

FromThread(Thread)

지정된 스레드에 대한 Dispatcher를 가져옵니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
Invoke(Action)

Action가 연결된 스레드에서 지정된 Dispatcher를 비동기적으로 실행합니다.

Invoke(Action, DispatcherPriority)

Action가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.

Invoke(Action, DispatcherPriority, CancellationToken)

Action가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.

Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

Action가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.

Invoke(Delegate, DispatcherPriority, Object[])

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.

Invoke(Delegate, Object[])

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 대리자를 동기적으로 실행합니다.

Invoke(Delegate, TimeSpan, DispatcherPriority, Object[])

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위의 지정된 기간 내에서 지정된 대리자를 동기적으로 실행합니다.

Invoke(Delegate, TimeSpan, Object[])

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위의 지정된 기간 내에서 지정된 대리자를 동기적으로 실행합니다.

Invoke(DispatcherPriority, Delegate)

연결된 스레드 Dispatcher 의 지정된 우선 순위에서 지정된 대리자를 동기적으로 실행합니다.

Invoke(DispatcherPriority, Delegate, Object)

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.

Invoke(DispatcherPriority, Delegate, Object, Object[])

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.

Invoke(DispatcherPriority, TimeSpan, Delegate)

Dispatcher가 만들어진 스레드에서 지정된 제한 시간 값을 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.

Invoke(DispatcherPriority, TimeSpan, Delegate, Object, Object[])

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.

Invoke<TResult>(Func<TResult>)

Func<TResult>가 연결된 스레드에서 지정된 Dispatcher를 비동기적으로 실행합니다.

Invoke<TResult>(Func<TResult>, DispatcherPriority)

Func<TResult>가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.

Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)

Func<TResult>가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.

Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken, TimeSpan)

Func<TResult>가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.

InvokeAsync(Action)

Action가 연결된 스레드에서 지정된 Dispatcher를 비동기적으로 실행합니다.

InvokeAsync(Action, DispatcherPriority)

Action가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 비동기적으로 실행합니다.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Action가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 비동기적으로 실행합니다.

InvokeAsync<TResult>(Func<TResult>)

Func<TResult>가 연결된 스레드에서 지정된 Dispatcher를 비동기적으로 실행합니다.

InvokeAsync<TResult>(Func<TResult>, DispatcherPriority)

Func<TResult>가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 비동기적으로 실행합니다.

InvokeAsync<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)

Func<TResult>가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 비동기적으로 실행합니다.

InvokeShutdown()

Dispatcher의 종료 프로세스를 동기적으로 시작합니다.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
PushFrame(DispatcherFrame)

실행 루프로 들어갑니다.

Run()

Dispatcher의 이벤트 큐에서 기본 실행 프레임을 푸시합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
ValidatePriority(DispatcherPriority, String)

지정된 DispatcherPriority가 유효한 우선 순위인지 여부를 확인합니다.

VerifyAccess()

호출 스레드가 이 Dispatcher에 액세스할 수 있는지 여부를 확인합니다.

Yield()

현재 디스패처에 비동기적으로 제어를 다시 제공하여 다른 이벤트를 처리할 수 있는 기회를 디스패처에 제공하는 awaitable 개체를 만듭니다.

Yield(DispatcherPriority)

현재 디스패처에 비동기적으로 제어를 다시 제공하여 다른 이벤트를 처리할 수 있는 기회를 디스패처에 제공하는 awaitable 개체를 만듭니다. 이 메서드의 결과를 기다리는 코드에 제어를 반환할 때 발생하는 작업은 지정된 우선 순위를 사용하여 예약됩니다.

이벤트

ShutdownFinished

Dispatcher가 종료되면 발생합니다.

ShutdownStarted

Dispatcher가 종료되기 시작하면 발생합니다.

UnhandledException

Invoke 또는 BeginInvoke를 통해 대리자를 실행하는 동안 스레드 예외가 throw되고 catch되지 않으면 발생합니다.

UnhandledExceptionFilter

필터 단계에서 Invoke 또는 BeginInvoke를 통해 대리자를 실행하는 동안 스레드 예외가 throw되고 catch되지 않으면 발생합니다.

확장 메서드

BeginInvoke(Dispatcher, Action)

지정된 Dispatcher가 만들어진 스레드에서 보통 우선 순위에 있는 지정된 대리자를 비동기적으로 실행합니다.

BeginInvoke(Dispatcher, Action, DispatcherPriority)

지정된 Dispatcher가 만들어진 스레드에서 지정된 우선 순위에 있는 지정된 대리자를 비동기적으로 실행합니다.

Invoke(Dispatcher, Action)

지정된 Dispatcher가 만들어진 스레드에서 보통 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.

Invoke(Dispatcher, Action, TimeSpan)

지정된 Dispatcher가 만들어진 스레드에서 지정된 대리자를 동기적으로 실행하고 지정된 제한 시간 후에 실행을 중지합니다.

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

지정된 Dispatcher가 만들어진 스레드에서 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행하고 지정된 제한 시간 후에 실행을 중지합니다.

Invoke(Dispatcher, Action, DispatcherPriority)

지정된 Dispatcher가 만들어진 스레드에서 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.

적용 대상

추가 정보