Dispatcher 클래스

정의

스레드에 대 한 작업 항목의 큐를 관리 하기 위한 서비스를 제공 합니다.Provides services for managing the queue of work items for a thread.

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

예제

다음 예제에서는 Dispatcher에 작업을 추가 하는 방법을 보여 줍니다.The following example shows how to place an operation onto a Dispatcher. 이 예제의 전체 소스 코드를 보려면 장기 실행 계산 샘플을 사용 하 여 단일 스레드 애플리케이션합니다.For the full source code of this example, see Single-Threaded Application with Long-Running Calculation Sample.

먼저, 인수를 받지 않는 대리자를 만듭니다.First, a delegate is created that accepts no arguments.

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

그런 다음 BeginInvoke(DispatcherPriority, Delegate)가 호출 됩니다.Next, BeginInvoke(DispatcherPriority, Delegate) is called. BeginInvoke(DispatcherPriority, Delegate) 호출은 DispatcherPriority.Normal로 설정 된 우선 순위와 대리자 NextPrimeDelegate의 인스턴스를 통해 전달 되는 콜백을 사용 하 여 두 개의 매개 변수를 사용 합니다.This call to BeginInvoke(DispatcherPriority, Delegate) takes two parameters: the priority, which is set to DispatcherPriority.Normal, and the callback, which is passed in through an instance of the delegate NextPrimeDelegate.

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

설명

Dispatcher은 특정 스레드에 대해 우선 순위가 지정 된 작업 항목 큐를 유지 관리 합니다.The Dispatcher maintains a prioritized queue of work items for a specific thread.

스레드에 대 한 Dispatcher 만들어지면 Dispatcher 종료 되더라도 스레드와 연결 될 수 있는 Dispatcher가 되 고,When a Dispatcher is created on a thread, it becomes the only Dispatcher that can be associated with the thread, even if the Dispatcher is shut down.

현재 스레드에 대 한 CurrentDispatcher를 가져오려고 시도 했지만 Dispatcher 스레드에 연결 되지 않은 경우에는 Dispatcher 생성 됩니다.If you attempt to get the CurrentDispatcher for the current thread and a Dispatcher is not associated with the thread, a Dispatcher will be created. DispatcherObject를 만들 때에도 Dispatcher 만들어집니다.A Dispatcher is also created when you create a DispatcherObject. 백그라운드 스레드에서 Dispatcher를 만드는 경우 스레드를 종료 하기 전에 디스패처를 종료 해야 합니다.If you create a Dispatcher on a background thread, be sure to shut down the dispatcher before exiting the thread.

Dispatcher 종료 되 면 다시 시작할 수 없습니다.If a Dispatcher is shut down, it cannot be restarted.

WPFWPF에서 DispatcherObject는 연결 된 Dispatcher만 액세스할 수 있습니다.In WPFWPF, a DispatcherObject can only be accessed by the Dispatcher it is associated with. 예를 들어 백그라운드 스레드는 UIUI 스레드의 Dispatcher 연결 된 Button의 내용을 업데이트할 수 없습니다.For example, a background thread cannot update the contents of a Button that is associated with the Dispatcher on the UIUI thread. 백그라운드 스레드가 ButtonContent 속성에 액세스 하려면 백그라운드 스레드에서 작업을 UIUI 스레드와 연결 된 Dispatcher에 위임 해야 합니다.In order for the background thread to access the Content property of the Button, the background thread must delegate the work to the Dispatcher associated with the UIUI thread. 이는 Invoke 또는 BeginInvoke를 사용 하 여 수행 됩니다.This is accomplished by using either Invoke or BeginInvoke. Invoke은 동기식 이며 BeginInvoke는 비동기입니다.Invoke is synchronous and BeginInvoke is asynchronous. 작업은 지정 된 DispatcherPriorityDispatcher 큐에 추가 됩니다.The operation is added to the queue of the Dispatcher at the specified DispatcherPriority.

종료 된 Dispatcher에서 BeginInvoke를 호출 하면 반환 된 DispatcherOperation의 status 속성이 Aborted로 설정 됩니다.If BeginInvoke is called on a Dispatcher that has shut down, the status property of the returned DispatcherOperation is set to Aborted.

DisableProcessing를 제외 하 고 Dispatcher의 모든 메서드는 자유 스레드입니다.All of the methods on Dispatcher, with the exception of DisableProcessing, are free-threaded.

파생 된 개체 DispatcherObject 스레드 선호도 있습니다.Objects that derive from DispatcherObject have thread affinity.

파생 된 개체 Freezable 는 자유 스레드는 고정 되어 있는 경우.Objects that derive from Freezable are free-threaded when they are frozen. 자세한 내용은 Freezable 개체 개요를 참조하세요.For more information, see Freezable Objects Overview.

속성

CurrentDispatcher

스레드에 연결된 Dispatcher가 없는 경우 현재 실행 중인 스레드에 대한 Dispatcher를 가져와서 새 Dispatcher를 만듭니다.Gets the Dispatcher for the thread currently executing and creates a new Dispatcher if one is not already associated with the thread.

HasShutdownFinished

Dispatcher가 완전히 종료되었는지 여부를 확인합니다.Determines whether the Dispatcher has finished shutting down.

HasShutdownStarted

Dispatcher가 종료되었는지 여부를 확인합니다.Determines whether the Dispatcher is shutting down.

Hooks

Dispatcher에 대한 추가 이벤트 정보를 제공하는 후크 컬렉션을 가져옵니다.Gets the collection of hooks that provide additional event information about the Dispatcher.

Thread

Dispatcher가 연결된 스레드를 가져옵니다.Gets the thread this Dispatcher is associated with.

메서드

BeginInvoke(Delegate, DispatcherPriority, Object[])

Dispatcher가 만들어진 스레드에서 지정된 우선 순위에 지정된 인수를 사용하여 지정된 대리자를 비동기적으로 실행합니다.Executes the specified delegate asynchronously with the specified arguments, at the specified priority, on the thread that the Dispatcher was created on.

BeginInvoke(Delegate, Object[])

Dispatcher가 만들어진 스레드에서 지정된 인수를 사용하여 지정된 대리자를 비동기적으로 실행합니다.Executes the specified delegate asynchronously with the specified arguments on the thread that the Dispatcher was created on.

BeginInvoke(DispatcherPriority, Delegate)

Dispatcher가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 대리자를 비동기적으로 실행합니다.Executes the specified delegate asynchronously at the specified priority on the thread the Dispatcher is associated with.

BeginInvoke(DispatcherPriority, Delegate, Object)

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 비동기적으로 실행합니다.Executes the specified delegate asynchronously at the specified priority and with the specified argument on the thread the Dispatcher is associated with.

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

Dispatcher가 연결된 스레드에서 지정된 인수 배열을 사용하여 지정된 우선 순위에 있는 지정된 대리자를 비동기적으로 실행합니다.Executes the specified delegate asynchronously at the specified priority and with the specified array of arguments on the thread the Dispatcher is associated with.

BeginInvokeShutdown(DispatcherPriority)

비동기적으로 Dispatcher 종료를 시작합니다.Initiates shutdown of the Dispatcher asynchronously.

CheckAccess()

호출 스레드가 이 Dispatcher에 연결된 스레드인지 여부를 확인합니다.Determines whether the calling thread is the thread associated with this Dispatcher.

DisableProcessing()

Dispatcher 큐 프로세스를 비활성화합니다.Disables processing of the Dispatcher queue.

Equals(Object)

지정한 개체가 현재 개체와 같은지를 확인합니다.Determines whether the specified object is equal to the current object.

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

중첩 된 프레임을 포함 하 여, 모든 프레임을 종료 하는 요청입니다.Requests that all frames exit, including nested frames.

FromThread(Thread)

지정된 스레드에 대한 Dispatcher를 가져옵니다.Gets the Dispatcher for the specified thread.

GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

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

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

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

Action가 연결된 스레드에서 지정된 Dispatcher를 비동기적으로 실행합니다.Executes the specified Action synchronously on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority)

Action가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority, CancellationToken)

Action가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

Action가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.Executes the specified Action synchronously at the specified priority on the thread the Dispatcher is associated with.

Invoke(Delegate, DispatcherPriority, Object[])

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(Delegate, Object[])

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate with the specified arguments synchronously on the thread the Dispatcher is associated with.

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

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위의 지정된 기간 내에서 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate within the designated time span at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(Delegate, TimeSpan, Object[])

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위의 지정된 기간 내에서 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate within the designated time span at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(DispatcherPriority, Delegate)

Dispatcher가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate synchronously at the specified priority on the thread on which the Dispatcher is associated with.

Invoke(DispatcherPriority, Delegate, Object)

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate at the specified priority with the specified argument synchronously on the thread the Dispatcher is associated with.

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

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke(DispatcherPriority, TimeSpan, Delegate)

Dispatcher가 만들어진 스레드에서 지정된 제한 시간 값을 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate synchronously at the specified priority and with the specified time-out value on the thread the Dispatcher was created.

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate at the specified priority with the specified argument synchronously on the thread the Dispatcher is associated with.

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

Dispatcher가 연결된 스레드에서 지정된 인수를 사용하여 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate at the specified priority with the specified arguments synchronously on the thread the Dispatcher is associated with.

Invoke<TResult>(Func<TResult>)

Func<TResult>가 연결된 스레드에서 지정된 Dispatcher를 비동기적으로 실행합니다.Executes the specified Func<TResult> synchronously on the thread the Dispatcher is associated with.

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

Func<TResult>가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

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

Func<TResult>가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

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

Func<TResult>가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 동기적으로 실행합니다.Executes the specified Func<TResult> synchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync(Action)

Action가 연결된 스레드에서 지정된 Dispatcher를 비동기적으로 실행합니다.Executes the specified Action asynchronously on the thread the Dispatcher is associated with.

InvokeAsync(Action, DispatcherPriority)

Action가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 비동기적으로 실행합니다.Executes the specified Action asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Action가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 비동기적으로 실행합니다.Executes the specified Action asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeAsync<TResult>(Func<TResult>)

Func<TResult>가 연결된 스레드에서 지정된 Dispatcher를 비동기적으로 실행합니다.Executes the specified Func<TResult> asynchronously on the thread the Dispatcher is associated with.

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

Func<TResult>가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 비동기적으로 실행합니다.Executes the specified Func<TResult> asynchronously at the specified priority on the thread the Dispatcher is associated with.

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

Func<TResult>가 연결된 스레드에서 지정된 우선 순위에 있는 지정된 Dispatcher를 비동기적으로 실행합니다.Executes the specified Func<TResult> asynchronously at the specified priority on the thread the Dispatcher is associated with.

InvokeShutdown()

Dispatcher의 종료 프로세스를 동기적으로 시작합니다.Initiates the shutdown process of the Dispatcher synchronously.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

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

실행 루프로를 들어갑니다.Enters an execute loop.

Run()

Dispatcher의 이벤트 큐에서 기본 실행 프레임을 푸시합니다.Pushes the main execution frame on the event queue of the Dispatcher.

ToString()

현재 개체를 나타내는 string을 반환합니다.Returns a string that represents the current object.

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

지정된 DispatcherPriority가 유효한 우선 순위인지 여부를 확인합니다.Determines whether the specified DispatcherPriority is a valid priority.

VerifyAccess()

호출 스레드가 이 Dispatcher에 액세스할 수 있는지 여부를 확인합니다.Determines whether the calling thread has access to this Dispatcher.

Yield()

비동기적으로 제어를 현재 디스패처에 다시 생성 하 고 디스패처가 다른 이벤트를 처리할 수 있는 기회를 제공 하는 awaitable 개체를 만듭니다.Creates an awaitable object that asynchronously yields control back to the current dispatcher and provides an opportunity for the dispatcher to process other events.

Yield(DispatcherPriority)

비동기적으로 제어를 현재 디스패처에 다시 생성 하 고 디스패처가 다른 이벤트를 처리할 수 있는 기회를 제공 하는 awaitable 개체를 만듭니다.Creates an awaitable object that asynchronously yields control back to the current dispatcher and provides an opportunity for the dispatcher to process other events. 이 메서드의 결과 기다리는 코드에 컨트롤이 반환 될 때 발생 하는 작업은 지정된 된 우선 순위를 사용 하 여 예약 됩니다.The work that occurs when control returns to the code awaiting the result of this method is scheduled with the specified priority.

이벤트

ShutdownFinished

Dispatcher가 종료되면 발생합니다.Occurs when the Dispatcher finishes shutting down.

ShutdownStarted

Dispatcher가 종료되기 시작하면 발생합니다.Occurs when the Dispatcher begins to shut down.

UnhandledException

Invoke 또는 BeginInvoke를 통해 대리자를 실행하는 동안 스레드 예외가 throw되고 catch되지 않으면 발생합니다.Occurs when a thread exception is thrown and uncaught during execution of a delegate by way of Invoke or BeginInvoke.

UnhandledExceptionFilter

필터 단계에서 Invoke 또는 BeginInvoke를 통해 대리자를 실행하는 동안 스레드 예외가 throw되고 catch되지 않으면 발생합니다.Occurs when a thread exception is thrown and uncaught during execution of a delegate by way of Invoke or BeginInvoke when in the filter stage.

확장 메서드

BeginInvoke(Dispatcher, Action)

지정된 Dispatcher가 만들어진 스레드에서 보통 우선 순위에 있는 지정된 대리자를 비동기적으로 실행합니다.Executes the specified delegate asynchronously with normal priority on the thread that the specified Dispatcher was created on.

BeginInvoke(Dispatcher, Action, DispatcherPriority)

지정된 Dispatcher가 만들어진 스레드에서 지정된 우선 순위에 있는 지정된 대리자를 비동기적으로 실행합니다.Executes the specified delegate asynchronously with the specified priority on the thread that the specified Dispatcher was created on.

Invoke(Dispatcher, Action)

지정된 Dispatcher가 만들어진 스레드에서 보통 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate synchronously with normal priority on the thread that the specified Dispatcher was created on.

Invoke(Dispatcher, Action, TimeSpan)

지정된 Dispatcher가 만들어진 스레드에서 지정된 대리자를 동기적으로 실행하고 지정된 제한 시간 후에 실행을 중지합니다.Executes the specified delegate synchronously on the thread that the specified Dispatcher was created on, and stops execution after the specified time-out period.

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

지정된 Dispatcher가 만들어진 스레드에서 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행하고 지정된 제한 시간 후에 실행을 중지합니다.Executes the specified delegate synchronously with the specified priority on the thread that the specified Dispatcher was created on, and stops execution after the specified time-out period.

Invoke(Dispatcher, Action, DispatcherPriority)

지정된 Dispatcher가 만들어진 스레드에서 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다.Executes the specified delegate synchronously with the specified priority on the thread that the specified Dispatcher was created on.

적용 대상

추가 정보