다음을 통해 공유


Dispatcher 클래스

정의

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

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

예제

다음 예제에서는 작업을 .에 Dispatcher배치하는 방법을 보여줍니다. 이 예제의 전체 소스 코드는 Long-Running 계산 샘플이 있는Single-Threaded 애플리케이션을 참조하세요.

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

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 와 연결되지 않은 경우 생성 Dispatcher 됩니다. A Dispatcher 는 만들 때도 만들어집니다 DispatcherObject. 백그라운드 스레드에서 Dispatcher 만드는 경우 스레드를 종료하기 전에 디스패처를 종료해야 합니다.

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

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

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

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

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

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

속성

Name Description
CurrentDispatcher

Dispatcher 현재 실행 중인 스레드에 대한 값을 가져오고 스레드와 아직 연결되지 않은 경우 새 Dispatcher 스레드를 만듭니다.

HasShutdownFinished

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

HasShutdownStarted

종료 여부를 Dispatcher 결정합니다.

Hooks

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

Thread

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

메서드

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

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

BeginInvoke(Delegate, Object[])

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

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

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

BeginInvoke(DispatcherPriority, Delegate, Object)

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

BeginInvoke(DispatcherPriority, Delegate)

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

BeginInvokeShutdown(DispatcherPriority)

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

CheckAccess()

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

DisableProcessing()

큐 처리를 Dispatcher 사용하지 않도록 설정합니다.

Equals(Object)

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

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

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

FromThread(Thread)

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

GetHashCode()

기본 해시 함수로 사용됩니다.

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

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

(다음에서 상속됨 Object)
Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

연결된 스레드 Dispatcher 의 지정된 Action 우선 순위에서 지정된 우선 순위에서 지정된 값을 동기적으로 실행합니다.

Invoke(Action, DispatcherPriority, CancellationToken)

연결된 스레드 Dispatcher 의 지정된 Action 우선 순위에서 지정된 우선 순위에서 지정된 값을 동기적으로 실행합니다.

Invoke(Action, DispatcherPriority)

연결된 스레드 Dispatcher 의 지정된 Action 우선 순위에서 지정된 우선 순위에서 지정된 값을 동기적으로 실행합니다.

Invoke(Action)

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

Invoke(Delegate, DispatcherPriority, Object[])

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

Invoke(Delegate, Object[])

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

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

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

Invoke(Delegate, TimeSpan, Object[])

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

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

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

Invoke(DispatcherPriority, Delegate, Object)

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

Invoke(DispatcherPriority, Delegate)

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

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

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

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

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

Invoke(DispatcherPriority, TimeSpan, Delegate)

지정된 우선 순위에서 지정된 대리자를 동기적으로 실행하고 생성된 스레드 Dispatcher 에서 지정된 제한 시간 값을 사용하여 실행합니다.

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

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

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

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

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

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

Invoke<TResult>(Func<TResult>)

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

InvokeAsync(Action, DispatcherPriority, CancellationToken)

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

InvokeAsync(Action, DispatcherPriority)

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

InvokeAsync(Action)

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

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

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

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

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

InvokeAsync<TResult>(Func<TResult>)

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

InvokeShutdown()

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

MemberwiseClone()

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

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

실행 루프를 입력합니다.

Run()

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

ToString()

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

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

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

VerifyAccess()

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

Yield()

현재 디스패처로 제어를 비동기적으로 반환하고 디스패처가 다른 이벤트를 처리할 수 있는 기회를 제공하는 대기 가능한 개체를 만듭니다.

Yield(DispatcherPriority)

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

이벤트

Name Description
ShutdownFinished

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

ShutdownStarted

종료가 Dispatcher 시작될 때 발생합니다.

UnhandledException

대리자를 실행하는 Invoke 동안 스레드 예외가 throw되고 catch되지 않은 경우 발생합니다 BeginInvoke.

UnhandledExceptionFilter

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

확장명 메서드

Name Description
BeginInvoke(Dispatcher, Action, DispatcherPriority)

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

BeginInvoke(Dispatcher, Action)

지정된 대리자를 만든 스레드 Dispatcher 에서 일반 우선 순위로 비동기적으로 실행합니다.

Invoke(Dispatcher, Action, DispatcherPriority)

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

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

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

Invoke(Dispatcher, Action, TimeSpan)

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

Invoke(Dispatcher, Action)

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

적용 대상

추가 정보