Dispatcher Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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. |