Dispatcher 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
스레드에 대한 작업 항목 큐를 관리하는 서비스를 제공합니다.
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가 연결된 스레드를 가져옵니다. |
메서드
이벤트
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가 만들어진 스레드에서 지정된 우선 순위에 있는 지정된 대리자를 동기적으로 실행합니다. |