Dispatcher Klas

Definitie

Biedt services voor het beheren van de wachtrij met werkitems voor een thread.

public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
Overname
Dispatcher

Voorbeelden

In het volgende voorbeeld ziet u hoe u een bewerking op een Dispatcher. Zie Single-Threaded toepassing met Long-Running berekeningsvoorbeeld voor de volledige broncode van dit voorbeeld.

Eerst wordt een gemachtigde gemaakt die geen argumenten accepteert.

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

BeginInvoke(DispatcherPriority, Delegate) Vervolgens wordt het aangeroepen. Deze aanroep om twee parameters te BeginInvoke(DispatcherPriority, Delegate) gebruiken: de prioriteit, die is ingesteld op DispatcherPriority.Normal, en de callback, die wordt doorgegeven via een instantie van de gemachtigde NextPrimeDelegate.

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

Opmerkingen

Het Dispatcher onderhoudt een prioriteitswachtrij met werkitems voor een specifieke thread.

Wanneer een Dispatcher thread wordt gemaakt, wordt het de enige Dispatcher die kan worden gekoppeld aan de thread, zelfs als de Dispatcher thread wordt afgesloten.

Als u de CurrentDispatcher voor de huidige thread probeert op te halen en er geen Dispatcher is gekoppeld aan de thread, wordt er een Dispatcher gemaakt. Er Dispatcher wordt ook een gemaakt wanneer u een DispatcherObject. Als u een Dispatcher thread op de achtergrond maakt, moet u de dispatcher afsluiten voordat u de thread afsluit.

Als een Dispatcher computer wordt afgesloten, kan deze niet opnieuw worden opgestart.

In WPF kan een DispatcherObject alleen worden geopend door de Dispatcher is gekoppeld. Een achtergrondthread kan bijvoorbeeld de inhoud van een Button thread die is gekoppeld aan de Dispatcher ui-thread, niet bijwerken. Om de achtergrondthread toegang te geven tot de Content eigenschap van de Buttonthread, moet de achtergrondthread het werk delegeren aan de Dispatcher gekoppelde UI-thread. Dit wordt bereikt met behulp van Invoke of BeginInvoke. Invoke is synchroon en BeginInvoke asynchroon. De bewerking wordt toegevoegd aan de wachtrij van de Dispatcher opgegeven DispatcherPriority.

Als BeginInvoke wordt aangeroepen op een Dispatcher die is afgesloten, wordt de statuseigenschap van de geretourneerde DispatcherOperation waarde ingesteld Abortedop .

Alle methoden op Dispatcher, met uitzondering van DisableProcessing, zijn gratis threads.

Objecten die zijn afgeleid van DispatcherObject threadaffiniteit.

Objecten die zijn afgeleid van Freezable , zijn vrijthreaded wanneer ze worden geblokkeerd. Zie Overzicht van Freezable Objects voor meer informatie.

Eigenschappen

Name Description
CurrentDispatcher

Hiermee haalt u de Dispatcher thread op die momenteel wordt uitgevoerd en maakt u een nieuwe Dispatcher als deze nog niet is gekoppeld aan de thread.

HasShutdownFinished

Bepaalt of het Dispatcher afsluiten is voltooid.

HasShutdownStarted

Bepaalt of de Dispatcher computer wordt afgesloten.

Hooks

Hiermee haalt u de verzameling hooks op die aanvullende gebeurtenisinformatie over de Dispatcher.

Thread

Hiermee haalt u de thread op waarmee deze Dispatcher is gekoppeld.

Methoden

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

Hiermee wordt de opgegeven gemachtigde asynchroon uitgevoerd met de opgegeven argumenten, met de opgegeven prioriteit, op de thread waarop de Dispatcher thread is gemaakt.

BeginInvoke(Delegate, Object[])

Hiermee wordt de opgegeven gemachtigde asynchroon uitgevoerd met de opgegeven argumenten op de thread waarop de Dispatcher gemachtigde is gemaakt.

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

Hiermee wordt de opgegeven gemachtigde asynchroon uitgevoerd op de opgegeven prioriteit en met de opgegeven matrix met argumenten op de thread waarmee de Dispatcher thread is gekoppeld.

BeginInvoke(DispatcherPriority, Delegate, Object)

Hiermee wordt de opgegeven gemachtigde asynchroon uitgevoerd op de opgegeven prioriteit en met het opgegeven argument op de thread waarmee de Dispatcher thread is gekoppeld.

BeginInvoke(DispatcherPriority, Delegate)

Hiermee wordt de opgegeven gemachtigde asynchroon uitgevoerd op de opgegeven prioriteit op de thread waarmee de Dispatcher thread is gekoppeld.

BeginInvokeShutdown(DispatcherPriority)

Start het afsluiten van de Dispatcher asynchroon.

CheckAccess()

Bepaalt of de aanroepende thread de thread is die aan deze Dispatcherthread is gekoppeld.

DisableProcessing()

Hiermee wordt de verwerking van de Dispatcher wachtrij uitgeschakeld.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
ExitAllFrames()

Aanvragen dat alle frames worden afgesloten, inclusief geneste frames.

FromThread(Thread)

Hiermee haalt u de Dispatcher voor de opgegeven thread op.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

Hiermee wordt de opgegeven Action synchroon uitgevoerd op de opgegeven prioriteit op de thread waarmee de Dispatcher thread is gekoppeld.

Invoke(Action, DispatcherPriority, CancellationToken)

Hiermee wordt de opgegeven Action synchroon uitgevoerd op de opgegeven prioriteit op de thread waarmee de Dispatcher thread is gekoppeld.

Invoke(Action, DispatcherPriority)

Hiermee wordt de opgegeven Action synchroon uitgevoerd op de opgegeven prioriteit op de thread waarmee de Dispatcher thread is gekoppeld.

Invoke(Action)

Hiermee wordt de opgegeven Action synchroon uitgevoerd op de thread waarmee de Dispatcher thread is gekoppeld.

Invoke(Delegate, DispatcherPriority, Object[])

Hiermee wordt de opgegeven gemachtigde uitgevoerd op de opgegeven prioriteit met de opgegeven argumenten synchroon op de thread waarmee de Dispatcher thread is gekoppeld.

Invoke(Delegate, Object[])

Hiermee wordt de opgegeven gemachtigde uitgevoerd met de opgegeven argumenten synchroon op de thread waarmee de Dispatcher gemachtigde is gekoppeld.

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

Hiermee wordt de opgegeven gemachtigde uitgevoerd binnen de opgegeven tijdsperiode op de opgegeven prioriteit met de opgegeven argumenten synchroon op de thread waarmee de Dispatcher thread is gekoppeld.

Invoke(Delegate, TimeSpan, Object[])

Hiermee wordt de opgegeven gemachtigde uitgevoerd binnen de opgegeven tijdsperiode op de opgegeven prioriteit met de opgegeven argumenten synchroon op de thread waarmee de Dispatcher thread is gekoppeld.

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

Hiermee wordt de opgegeven gemachtigde uitgevoerd op de opgegeven prioriteit met de opgegeven argumenten synchroon op de thread waarmee de Dispatcher thread is gekoppeld.

Invoke(DispatcherPriority, Delegate, Object)

Hiermee wordt de opgegeven gemachtigde uitgevoerd op de opgegeven prioriteit met het opgegeven argument synchroon op de thread waarmee de Dispatcher gemachtigde is gekoppeld.

Invoke(DispatcherPriority, Delegate)

Hiermee wordt de opgegeven gemachtigde synchroon uitgevoerd op de opgegeven prioriteit op de thread waaraan de Dispatcher thread is gekoppeld.

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

Hiermee wordt de opgegeven gemachtigde uitgevoerd op de opgegeven prioriteit met de opgegeven argumenten synchroon op de thread waarmee de Dispatcher thread is gekoppeld.

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

Hiermee wordt de opgegeven gemachtigde uitgevoerd op de opgegeven prioriteit met het opgegeven argument synchroon op de thread waarmee de Dispatcher gemachtigde is gekoppeld.

Invoke(DispatcherPriority, TimeSpan, Delegate)

Hiermee wordt de opgegeven gemachtigde synchroon uitgevoerd op de opgegeven prioriteit en met de opgegeven time-outwaarde op de thread die is Dispatcher gemaakt.

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

Hiermee wordt de opgegeven Func<TResult> synchroon uitgevoerd op de opgegeven prioriteit op de thread waarmee de Dispatcher thread is gekoppeld.

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

Hiermee wordt de opgegeven Func<TResult> synchroon uitgevoerd op de opgegeven prioriteit op de thread waarmee de Dispatcher thread is gekoppeld.

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

Hiermee wordt de opgegeven Func<TResult> synchroon uitgevoerd op de opgegeven prioriteit op de thread waarmee de Dispatcher thread is gekoppeld.

Invoke<TResult>(Func<TResult>)

Hiermee wordt de opgegeven Func<TResult> synchroon uitgevoerd op de thread waarmee de Dispatcher thread is gekoppeld.

InvokeAsync(Action, DispatcherPriority, CancellationToken)

Hiermee wordt de opgegeven Action asynchroon uitgevoerd op de opgegeven prioriteit op de thread waarmee de Dispatcher thread is gekoppeld.

InvokeAsync(Action, DispatcherPriority)

Hiermee wordt de opgegeven Action asynchroon uitgevoerd op de opgegeven prioriteit op de thread waarmee de Dispatcher thread is gekoppeld.

InvokeAsync(Action)

Hiermee wordt de opgegeven Action asynchroon uitgevoerd op de thread waarmee de Dispatcher thread is gekoppeld.

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

Hiermee wordt de opgegeven Func<TResult> asynchroon uitgevoerd op de opgegeven prioriteit op de thread waarmee de Dispatcher thread is gekoppeld.

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

Hiermee wordt de opgegeven Func<TResult> asynchroon uitgevoerd op de opgegeven prioriteit op de thread waarmee de Dispatcher thread is gekoppeld.

InvokeAsync<TResult>(Func<TResult>)

Hiermee wordt de opgegeven Func<TResult> asynchroon uitgevoerd op de thread waarmee de Dispatcher thread is gekoppeld.

InvokeShutdown()

Hiermee wordt het afsluitproces van de Dispatcher synchronisatie gestart.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
PushFrame(DispatcherFrame)

Voert een execute-lus in.

Run()

Pusht het hoofduitvoeringskader in de gebeurteniswachtrij van de Dispatcher.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
ValidatePriority(DispatcherPriority, String)

Bepaalt of de opgegeven DispatcherPriority prioriteit geldig is.

VerifyAccess()

Bepaalt of de aanroepende thread toegang heeft tot dit Dispatcher.

Yield()

Hiermee maakt u een te wachtend object dat asynchroon controle terugbrengt naar de huidige dispatcher en biedt de dispatcher de mogelijkheid om andere gebeurtenissen te verwerken.

Yield(DispatcherPriority)

Hiermee maakt u een te wachtend object dat asynchroon controle terugbrengt naar de huidige dispatcher en biedt de dispatcher de mogelijkheid om andere gebeurtenissen te verwerken. Het werk dat optreedt wanneer het besturingselement terugkeert naar de code die wacht op het resultaat van deze methode, wordt gepland met de opgegeven prioriteit.

gebeurtenis

Name Description
ShutdownFinished

Treedt op wanneer het Dispatcher afsluiten is voltooid.

ShutdownStarted

Treedt op wanneer de Dispatcher start wordt afgesloten.

UnhandledException

Treedt op wanneer een threaduitzondering wordt gegenereerd en ondeugd tijdens de uitvoering van een gemachtigde via Invoke of BeginInvoke.

UnhandledExceptionFilter

Treedt op wanneer er een threaduitzondering wordt gegenereerd en onopgeslagen tijdens het uitvoeren van Invoke een gemachtigde via of BeginInvoke in de filterfase.

Extensiemethoden

Name Description
BeginInvoke(Dispatcher, Action, DispatcherPriority)

Hiermee wordt de opgegeven gemachtigde asynchroon uitgevoerd met de opgegeven prioriteit op de thread waarop de opgegeven Dispatcher is gemaakt.

BeginInvoke(Dispatcher, Action)

Hiermee wordt de opgegeven gemachtigde asynchroon uitgevoerd met normale prioriteit voor de thread waarop de opgegeven Dispatcher is gemaakt.

Invoke(Dispatcher, Action, DispatcherPriority)

Hiermee wordt de opgegeven gemachtigde synchroon uitgevoerd met de opgegeven prioriteit op de thread waarop de opgegeven Dispatcher is gemaakt.

Invoke(Dispatcher, Action, TimeSpan, DispatcherPriority)

Voert de opgegeven gemachtigde synchroon uit met de opgegeven prioriteit op de thread waarop de opgegeven Dispatcher is gemaakt en stopt de uitvoering na de opgegeven time-outperiode.

Invoke(Dispatcher, Action, TimeSpan)

Voert de opgegeven gemachtigde synchroon uit op de thread waarop de opgegeven Dispatcher is gemaakt en stopt de uitvoering na de opgegeven time-outperiode.

Invoke(Dispatcher, Action)

Hiermee wordt de opgegeven gemachtigde synchroon uitgevoerd met normale prioriteit op de thread waarop de opgegeven Dispatcher is gemaakt.

Van toepassing op

Zie ook