Dispatcher 类

定义

提供用于管理线程工作项队列的服务。

public ref class Dispatcher sealed
public sealed class Dispatcher
type Dispatcher = class
Public NotInheritable Class Dispatcher
继承
Dispatcher

示例

以下示例演示如何将操作置于 .Dispatcher 有关此示例的完整源代码,请参阅 包含Long-Running计算示例的单线程应用程序

首先,创建一个不接受任何参数的委托。

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 特定线程的工作项的优先级队列。

在线程上创建 a Dispatcher 时,它将成为唯 Dispatcher 一可与该线程关联的线程,即使 Dispatcher 关闭该线程也是如此。

如果尝试获取 CurrentDispatcher 当前线程且 Dispatcher 未与该线程关联,将创建一个 DispatcherDispatcher创建 A DispatcherObject时也会创建 。 如果在后台线程上创建一个 Dispatcher ,请确保在退出线程之前关闭调度程序。

如果已关闭, Dispatcher 则无法重新启动。

在 WPF 中, DispatcherObject 只能由 Dispatcher 它与之关联的访问。 例如,后台线程无法更新与 Dispatcher UI 线程上关联的内容Button。 为了使后台线程访问该 Content 属性 Button,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的工作。 这是通过使用或 Invoke BeginInvokeInvoke 是同步的, BeginInvoke 是异步的。 操作将添加到指定DispatcherPriority位置的队列Dispatcher中。

如果在 BeginInvoke 关闭的某个 Dispatcher 节点上调用,则返回 DispatcherOperation 的状态属性设置为 Aborted

除此以外DisableProcessing,所有方法Dispatcher都是自由线程的。

派生自 DispatcherObject 具有线程相关性的对象。

Freezable 派生的对象在冻结时是自由线程的。 有关详细信息,请参阅 Freezable 对象概述

属性

CurrentDispatcher

获取当前正在执行的线程的 Dispatcher,并在该线程没有关联的调度程序时创建一个新的 Dispatcher

HasShutdownFinished

确定 Dispatcher 是否已经完成关闭。

HasShutdownStarted

确定 Dispatcher 是否正在关闭。

Hooks

获取提供有关 Dispatcher 的其他事件信息的挂钩集合。

Thread

获取与此 Dispatcher 关联的线程。

方法

BeginInvoke(Delegate, DispatcherPriority, Object[])

用在其上创建了 Dispatcher 的线程上的指定参数,按指定优先级异步执行指定委托。

BeginInvoke(Delegate, Object[])

用在其上创建了 Dispatcher 的线程的指定参数异步执行指定委托。

BeginInvoke(DispatcherPriority, Delegate)

按指定的优先级在与 Dispatcher 关联的线程上异步执行指定的委托。

BeginInvoke(DispatcherPriority, Delegate, Object)

按指定的优先级并使用指定的参数在与 Dispatcher 关联的线程上异步执行指定的委托。

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

按指定的优先级并使用指定的参数数组在与 Dispatcher 关联的线程上异步执行指定的委托。

BeginInvokeShutdown(DispatcherPriority)

异步启动 Dispatcher 的关闭。

CheckAccess()

确定调用线程是否为与此 Dispatcher 关联的线程。

DisableProcessing()

禁用对 Dispatcher 队列的处理。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
ExitAllFrames()

请求退出所有帧,包括嵌套的帧。

FromThread(Thread)

获取指定线程的 Dispatcher

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
Invoke(Action)

在与 Action 关联的线程上同步执行指定的 Dispatcher

Invoke(Action, DispatcherPriority)

在与 Action 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher

Invoke(Action, DispatcherPriority, CancellationToken)

在与 Action 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher

Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)

在与 Action 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher

Invoke(Delegate, DispatcherPriority, Object[])

按指定的优先级并使用指定的参数在与 Dispatcher 关联的线程上同步执行指定的委托。

Invoke(Delegate, Object[])

用与 Dispatcher 关联的线程上的指定参数同步执行指定委托。

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

用与 Dispatcher 关联的线程上的指定参数,按指定优先级同步执行指定时间范围内的指定委托。

Invoke(Delegate, TimeSpan, Object[])

用与 Dispatcher 关联的线程上的指定参数,按指定优先级同步执行指定时间范围内的指定委托。

Invoke(DispatcherPriority, Delegate)

在与之关联的线程 Dispatcher 上以指定的优先级同步执行指定的委托。

Invoke(DispatcherPriority, Delegate, Object)

按指定的优先级并使用指定的参数在与 Dispatcher 关联的线程上同步执行指定的委托。

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

按指定的优先级并使用指定的参数在与 Dispatcher 关联的线程上同步执行指定的委托。

Invoke(DispatcherPriority, TimeSpan, Delegate)

按指定的优先级并使用指定的超时值在创建 Dispatcher 的线程上同步执行指定的委托。

Invoke(DispatcherPriority, TimeSpan, Delegate, Object)

按指定的优先级并使用指定的参数在与 Dispatcher 关联的线程上同步执行指定的委托。

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

按指定的优先级并使用指定的参数在与 Dispatcher 关联的线程上同步执行指定的委托。

Invoke<TResult>(Func<TResult>)

在与 Func<TResult> 关联的线程上同步执行指定的 Dispatcher

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

在与 Func<TResult> 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher

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

在与 Func<TResult> 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher

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

在与 Func<TResult> 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher

InvokeAsync(Action)

在与 Action 关联的线程上异步执行指定的 Dispatcher

InvokeAsync(Action, DispatcherPriority)

在与 Action 关联的线程上,以指定的优先级,异步执行指定的 Dispatcher

InvokeAsync(Action, DispatcherPriority, CancellationToken)

在与 Action 关联的线程上,以指定的优先级,异步执行指定的 Dispatcher

InvokeAsync<TResult>(Func<TResult>)

在与 Func<TResult> 关联的线程上异步执行指定的 Dispatcher

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

在与 Func<TResult> 关联的线程上,以指定的优先级,异步执行指定的 Dispatcher

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

在与 Func<TResult> 关联的线程上,以指定的优先级,异步执行指定的 Dispatcher

InvokeShutdown()

同步启动 Dispatcher 的关闭过程。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
PushFrame(DispatcherFrame)

进入执行循环。

Run()

将主执行帧推送到 Dispatcher 的事件队列中。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
ValidatePriority(DispatcherPriority, String)

确定指定的 DispatcherPriority 是否为有效的优先级。

VerifyAccess()

确定调用线程是否可以访问此 Dispatcher

Yield()

创建异步产生控制权交还给当前计划程序并为该计划程序提供机会处理其他事件的可等待对象。

Yield(DispatcherPriority)

创建异步产生控制权交还给当前计划程序并为该计划程序提供机会处理其他事件的可等待对象。 当控件返回等待此方法的结果的代码按指定的优先级计划时,发生的操作。

事件

ShutdownFinished

Dispatcher 完成关闭时发生。

ShutdownStarted

Dispatcher 开始关闭时发生。

UnhandledException

在通过 InvokeBeginInvoke 执行委托的过程中,如果引发线程异常且未能捕获该异常,则发生此事件。

UnhandledExceptionFilter

当在筛选阶段通过 InvokeBeginInvoke 执行委托的过程中,如果引发线程异常且未能捕获该异常,则发生此事件。

扩展方法

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 的线程上同步执行指定的委托。

适用于

另请参阅