Dispatcher Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje služby pro správu fronty pracovních položek pro vlákno.
public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
- Dědičnost
-
Dispatcher
Příklady
Následující příklad ukazuje, jak umístit operaci na Dispatcher. Úplný zdrojový kód tohoto příkladu najdete v tématu Single-Threaded Application with Long-Running Calculation Sample.
Nejprve se vytvoří delegát, který nepřijímá žádné argumenty.
public delegate void NextPrimeDelegate();
Public Delegate Sub NextPrimeDelegate()
BeginInvoke(DispatcherPriority, Delegate) Dále se volá. Toto volání BeginInvoke(DispatcherPriority, Delegate) má dva parametry: prioritu, která je nastavena na DispatcherPriority.Normal, a zpětné volání, které se předává prostřednictvím instance delegáta NextPrimeDelegate.
startStopButton.Dispatcher.BeginInvoke(
DispatcherPriority.Normal,
new NextPrimeDelegate(CheckNextNumber));
startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New NextPrimeDelegate(AddressOf CheckNextNumber))
Poznámky
Udržuje Dispatcher frontu pracovních položek s prioritou pro konkrétní vlákno.
Dispatcher Když se vytvoří ve vlákně, stane se jedinýmDispatcher, který lze přidružit k vláknu, i když Dispatcher je vypnutý.
Pokud se pokusíte získat CurrentDispatcher aktuální vlákno a Dispatcher není přidružen k vláknu, Dispatcher vytvoří se. A Dispatcher se vytvoří také při vytváření .DispatcherObject Pokud vytvoříte Dispatcher vlákno na pozadí, nezapomeňte před ukončením vlákna vypnout dispečer.
Dispatcher Pokud je vypnutý, nejde ho restartovat.
Ve WPF DispatcherObject je možné k němu přistupovat Dispatcher pouze v případě, že je k němu přidružen. Například vlákno na pozadí nemůže aktualizovat obsah Button přidruženého k Dispatcher vláknu uživatelského rozhraní. Aby vlákno na pozadí získalo přístup k Content vlastnosti Button, vlákno na pozadí musí delegovat práci na Dispatcher přidružené vlákno uživatelského rozhraní. Toho lze dosáhnout pomocí nebo InvokeBeginInvoke. Invoke je synchronní a BeginInvoke je asynchronní. Operace se přidá do fronty Dispatcher v zadaném DispatcherPrioritybodě .
Je-li BeginInvoke volána na vypnuto Dispatcher , stav vlastnost vrácené DispatcherOperation je nastavena na Abortedhodnotu .
Všechny metody na Dispatcher, s výjimkou DisableProcessing, jsou bezvláknové.
Objekty odvozené od DispatcherObject spřažení vláken
Objekty odvozené z Freezable nich jsou při ukotvení bez vláken. Další informace naleznete v tématu Zamrznutelné objekty Přehled.
Vlastnosti
| Name | Description |
|---|---|
| CurrentDispatcher |
Dispatcher Získá pro vlákno aktuálně spuštěné a vytvoří novýDispatcher, pokud ještě není přidružen k vláknu. |
| HasShutdownFinished |
Určuje, jestli se Dispatcher dokončilo vypnutí. |
| HasShutdownStarted |
Určuje, jestli se Dispatcher vypíná. |
| Hooks |
Získá kolekci háků, které poskytují další informace o události o Dispatcher. |
| Thread |
Získá vlákno, které Dispatcher je přidruženo. |
Metody
| Name | Description |
|---|---|
| BeginInvoke(Delegate, DispatcherPriority, Object[]) |
Spustí zadaný delegát asynchronně se zadanými argumenty v zadané prioritě ve vlákně, ve Dispatcher které byl vytvořen. |
| BeginInvoke(Delegate, Object[]) |
Spustí zadaný delegát asynchronně se zadanými argumenty ve vlákně, ve Dispatcher které byl vytvořen. |
| BeginInvoke(DispatcherPriority, Delegate, Object, Object[]) |
Spustí zadaný delegát asynchronně na zadané prioritě a se zadaným polem argumentů ve vlákně, ke Dispatcher které je přidružen. |
| BeginInvoke(DispatcherPriority, Delegate, Object) |
Spustí zadaný delegát asynchronně na zadané prioritě a se zadaným argumentem ve vlákně, ke které Dispatcher je přidružen. |
| BeginInvoke(DispatcherPriority, Delegate) |
Spustí zadaný delegát asynchronně na zadané prioritě ve vlákně, ke které Dispatcher je přidružen. |
| BeginInvokeShutdown(DispatcherPriority) |
Inicializuje vypnutí Dispatcher asynchronně. |
| CheckAccess() |
Určuje, zda volající vlákno je vlákno přidružené k tomuto Dispatcher. |
| DisableProcessing() |
Zakáže zpracování fronty Dispatcher . |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| ExitAllFrames() |
Požaduje, aby všechny snímky byly ukončeny, včetně vnořených snímků. |
| FromThread(Thread) |
Dispatcher Získá pro zadané vlákno. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan) |
Provede zadaný Action synchronně na zadané prioritě ve vlákně, ke Dispatcher které je přidružen. |
| Invoke(Action, DispatcherPriority, CancellationToken) |
Provede zadaný Action synchronně na zadané prioritě ve vlákně, ke Dispatcher které je přidružen. |
| Invoke(Action, DispatcherPriority) |
Provede zadaný Action synchronně na zadané prioritě ve vlákně, ke Dispatcher které je přidružen. |
| Invoke(Action) |
Provede zadaný Action synchronně ve vlákně, ke Dispatcher které je přidružen. |
| Invoke(Delegate, DispatcherPriority, Object[]) |
Spustí zadaný delegát v zadané prioritě se zadanými argumenty synchronně ve vlákně, ke které Dispatcher je přidružen. |
| Invoke(Delegate, Object[]) |
Spustí zadaný delegát se zadanými argumenty synchronně ve vlákně, ke které Dispatcher je přidružen. |
| Invoke(Delegate, TimeSpan, DispatcherPriority, Object[]) |
Spustí zadaný delegát v určeném časovém rozsahu v zadané prioritě se zadanými argumenty synchronně ve vlákně, ke Dispatcher které je přidružen. |
| Invoke(Delegate, TimeSpan, Object[]) |
Spustí zadaný delegát v určeném časovém rozsahu v zadané prioritě se zadanými argumenty synchronně ve vlákně, ke Dispatcher které je přidružen. |
| Invoke(DispatcherPriority, Delegate, Object, Object[]) |
Spustí zadaný delegát v zadané prioritě se zadanými argumenty synchronně ve vlákně, ke které Dispatcher je přidružen. |
| Invoke(DispatcherPriority, Delegate, Object) |
Provede zadaný delegát v zadané prioritě se zadaným argumentem synchronně ve vlákně, ke které Dispatcher je přidružen. |
| Invoke(DispatcherPriority, Delegate) |
Spustí zadaný delegát synchronně na zadané prioritě ve vlákně, ke Dispatcher kterému je přidružen. |
| Invoke(DispatcherPriority, TimeSpan, Delegate, Object, Object[]) |
Spustí zadaný delegát v zadané prioritě se zadanými argumenty synchronně ve vlákně, ke které Dispatcher je přidružen. |
| Invoke(DispatcherPriority, TimeSpan, Delegate, Object) |
Provede zadaný delegát v zadané prioritě se zadaným argumentem synchronně ve vlákně, ke které Dispatcher je přidružen. |
| Invoke(DispatcherPriority, TimeSpan, Delegate) |
Provede zadaný delegát synchronně v zadané prioritě a se zadanou hodnotou časového limitu ve vlákně, které Dispatcher bylo vytvořeno. |
| Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken, TimeSpan) |
Provede zadaný Func<TResult> synchronně na zadané prioritě ve vlákně, ke Dispatcher které je přidružen. |
| Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken) |
Provede zadaný Func<TResult> synchronně na zadané prioritě ve vlákně, ke Dispatcher které je přidružen. |
| Invoke<TResult>(Func<TResult>, DispatcherPriority) |
Provede zadaný Func<TResult> synchronně na zadané prioritě ve vlákně, ke Dispatcher které je přidružen. |
| Invoke<TResult>(Func<TResult>) |
Provede zadaný Func<TResult> synchronně ve vlákně, ke Dispatcher které je přidružen. |
| InvokeAsync(Action, DispatcherPriority, CancellationToken) |
Provede zadané Action asynchronně na zadané prioritě ve vlákně, ke které Dispatcher je přidružen. |
| InvokeAsync(Action, DispatcherPriority) |
Provede zadané Action asynchronně na zadané prioritě ve vlákně, ke které Dispatcher je přidružen. |
| InvokeAsync(Action) |
Spustí zadaný Action asynchronně ve vlákně, ke které Dispatcher je přidružen. |
| InvokeAsync<TResult>(Func<TResult>, DispatcherPriority, CancellationToken) |
Provede zadané Func<TResult> asynchronně na zadané prioritě ve vlákně, ke které Dispatcher je přidružen. |
| InvokeAsync<TResult>(Func<TResult>, DispatcherPriority) |
Provede zadané Func<TResult> asynchronně na zadané prioritě ve vlákně, ke které Dispatcher je přidružen. |
| InvokeAsync<TResult>(Func<TResult>) |
Spustí zadaný Func<TResult> asynchronně ve vlákně, ke které Dispatcher je přidružen. |
| InvokeShutdown() |
Inicializuje proces Dispatcher vypnutí synchronně. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| PushFrame(DispatcherFrame) |
Zadá smyčku execute. |
| Run() |
Nasdílí hlavní spouštěcí rámec do fronty Dispatcherudálostí . |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
| ValidatePriority(DispatcherPriority, String) |
Určuje, zda je zadaná DispatcherPriority priorita platná. |
| VerifyAccess() |
Určuje, zda volající vlákno má přístup k tomuto Dispatcher. |
| Yield() |
Vytvoří objekt, který asynchronně vrací řízení zpět aktuálnímu dispečeru a poskytuje příležitost dispečeru zpracovat další události. |
| Yield(DispatcherPriority) |
Vytvoří objekt, který asynchronně vrací řízení zpět aktuálnímu dispečeru a poskytuje příležitost dispečeru zpracovat další události. Práce, která nastane, když se ovládací prvek vrátí do kódu čekající na výsledek této metody je naplánován se zadanou prioritou. |
Událost
| Name | Description |
|---|---|
| ShutdownFinished |
Nastane po Dispatcher ukončení ukončení. |
| ShutdownStarted |
Nastane, když Dispatcher se začne vypínat. |
| UnhandledException |
Nastane při vyvolání výjimky vlákna a nezachytí během provádění delegáta prostřednictvím Invoke nebo BeginInvoke. |
| UnhandledExceptionFilter |
Nastane, když je vyvoláno a nezachyceno během provádění delegáta prostřednictvím Invoke fáze filtru nebo BeginInvoke když je ve fázi filtru. |
Metody rozšíření
| Name | Description |
|---|---|
| BeginInvoke(Dispatcher, Action, DispatcherPriority) |
Spustí zadaný delegát asynchronně se zadanou prioritou ve vlákně, ve které byl zadaný Dispatcher vytvořen. |
| BeginInvoke(Dispatcher, Action) |
Spustí zadaný delegát asynchronně s normální prioritou ve vlákně, ve které byl zadaný Dispatcher vytvořen. |
| Invoke(Dispatcher, Action, DispatcherPriority) |
Spustí zadaný delegát synchronně se zadanou prioritou ve vlákně, ve které byl zadaný Dispatcher vytvořen. |
| Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority) |
Spustí zadaný delegát synchronně se zadanou prioritou ve vlákně, na které Dispatcher byl zadaný vytvořen, a zastaví provádění po zadaném časovém limitu. |
| Invoke(Dispatcher, Action, TimeSpan) |
Spustí zadaný delegát synchronně ve vlákně, na které byl zadaný Dispatcher vytvořen, a zastaví provádění po zadaném časovém limitu. |
| Invoke(Dispatcher, Action) |
Spustí zadaný delegát synchronně s normální prioritou ve vlákně, ve které byl zadaný Dispatcher vytvořen. |