Dispatcher.Invoke 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在与 Dispatcher 关联的线程上同步执行指定的委托。
重载
示例
以下示例使用 Invoke将委托置于 Dispatcher 的 上Normal。
// Places the delegate onto the UI Thread's Dispatcher
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
// Place delegate on the Dispatcher.
this.Dispatcher.Invoke(DispatcherPriority.Normal,
new TimerDispatcherDelegate(TimerWorkItem));
}
' Places the delegate onto the UI Thread's Dispatcher
Private Sub timer_Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
' Place delegate on the Dispatcher.
Me.Dispatcher.Invoke(DispatcherPriority.Normal, New TimerDispatcherDelegate(AddressOf TimerWorkItem))
End Sub
注解
在 WPF 中,只有创建 的 DispatcherObject 线程可以访问该对象。 例如,从main UI 线程中分离的后台线程无法更新在 UI 线程上创建的 的内容Button。 为了使后台线程能够访问 的 ButtonContent 属性,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的 。 这是通过使用 Invoke 或 BeginInvoke实现的。 Invoke 是同步的,并且 BeginInvoke 是异步的。 操作将添加到位于指定 DispatcherPriority处的 的事件Dispatcher队列中。
Invoke 是同步操作;因此,在回调返回之前,控件不会返回到调用对象。
Invoke(DispatcherPriority, TimeSpan, Delegate, Object, Object[])
按指定的优先级并使用指定的参数在与 Dispatcher 关联的线程上同步执行指定的委托。
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, TimeSpan timeout, Delegate ^ method, System::Object ^ arg, ... cli::array <System::Object ^> ^ args);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, TimeSpan timeout, Delegate method, object arg, params object[] args);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * TimeSpan * Delegate * obj * obj[] -> obj
Public Function Invoke (priority As DispatcherPriority, timeout As TimeSpan, method As Delegate, arg As Object, ParamArray args As Object()) As Object
参数
- priority
- DispatcherPriority
相对于事件队列中 Dispatcher 调用指定方法的其他挂起操作的优先级。
- timeout
- TimeSpan
等待操作开始的最长时间。 开始操作后,它将在此方法返回之前完成。 若要指定无限等待,请使用值 -1。 在同一线程调用中,任何其他负值都转换为 -1,从而导致无限等待。 在跨线程调用中,任何其他负值都 ArgumentOutOfRangeException引发 。
- method
- Delegate
对采用多个参数的方法的委托,该委托将被推送到 Dispatcher 事件队列中。
- arg
- Object
作为参数传递到指定方法中的对象。
- args
- Object[]
作为指定方法的参数传递的对象数组。
返回
正在被调用的委托的返回值,如果该委托没有返回值,则为 null
。
- 属性
例外
priority
等于 Inactive。
priority
不是有效的 DispatcherPriority。
method
为 null
。
timeout
是除 -1 之外的负数,此方法跨线程调用。
注解
arg
如果不需要参数,可为 null
。
在 WPF 中,只有创建 的 DispatcherObject 线程可以访问该对象。 例如,从main UI 线程中分离的后台线程无法更新在 UI 线程上创建的 的内容Button。 为了使后台线程能够访问 的 ButtonContent 属性,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的 。 这是通过使用 Invoke 或 BeginInvoke实现的。 Invoke 是同步的,并且 BeginInvoke 是异步的。 操作将添加到位于指定 DispatcherPriority处的 的事件Dispatcher队列中。
Invoke 是同步操作;因此,在回调返回之前,控件不会返回到调用对象。
适用于
Invoke(DispatcherPriority, TimeSpan, Delegate, Object)
按指定的优先级并使用指定的参数在与 Dispatcher 关联的线程上同步执行指定的委托。
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, TimeSpan timeout, Delegate ^ method, System::Object ^ arg);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, TimeSpan timeout, Delegate method, object arg);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * TimeSpan * Delegate * obj -> obj
Public Function Invoke (priority As DispatcherPriority, timeout As TimeSpan, method As Delegate, arg As Object) As Object
参数
- priority
- DispatcherPriority
相对于事件队列中 Dispatcher 调用指定方法的其他挂起操作的优先级。
- timeout
- TimeSpan
等待操作开始的最长时间。 开始操作后,它将在此方法返回之前完成。 若要指定无限等待,请使用值 -1。 在同一线程调用中,任何其他负值都转换为 -1,从而导致无限等待。 在跨线程调用中,任何其他负值都 ArgumentOutOfRangeException引发 。
- method
- Delegate
对采用多个参数的方法的委托,该委托将被推送到 Dispatcher 事件队列中。
- arg
- Object
作为参数传递到给定方法中的对象。 如果不需要参数,则可以为 null
。
返回
正在被调用的委托的返回值,如果该委托没有返回值,则为 null
。
- 属性
例外
priority
等于 Inactive。
priority
不是有效的优先级。
method
为 null
。
注解
arg
如果不需要参数,可以是null
在 WPF 中,只有创建 的 DispatcherObject 线程可以访问该对象。 例如,从main UI 线程中分离的后台线程无法更新在 UI 线程上创建的 的内容Button。 为了使后台线程能够访问 的 ButtonContent 属性,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的 。 这是通过使用 Invoke 或 BeginInvoke实现的。 Invoke 是同步的,并且 BeginInvoke 是异步的。 操作将添加到位于指定 DispatcherPriority处的 的事件Dispatcher队列中。
Invoke 是同步操作;因此,在回调返回之前,控件不会返回到调用对象。
适用于
Invoke(DispatcherPriority, Delegate, Object, Object[])
按指定的优先级并使用指定的参数在与 Dispatcher 关联的线程上同步执行指定的委托。
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg, ... cli::array <System::Object ^> ^ args);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg, params object[] args);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * Delegate * obj * obj[] -> obj
Public Function Invoke (priority As DispatcherPriority, method As Delegate, arg As Object, ParamArray args As Object()) As Object
参数
- priority
- DispatcherPriority
相对于事件队列中 Dispatcher 调用指定方法的其他挂起操作的优先级。
- method
- Delegate
对采用多个参数的方法的委托,该委托将被推送到 Dispatcher 事件队列中。
- arg
- Object
作为参数传递到给定方法中的对象。
- args
- Object[]
作为给定方法的自变量传递的对象数组。
返回
正在被调用的委托的返回值,如果该委托没有返回值,则为 null
。
- 属性
例外
priority
等于 Inactive。
priority
不是有效的优先级。
method
为 null
。
注解
arg
如果不需要参数,可以是null
在 WPF 中,只有创建 的 DispatcherObject 线程可以访问该对象。 例如,从main UI 线程中分离的后台线程无法更新在 UI 线程上创建的 的内容Button。 为了使后台线程能够访问 的 ButtonContent 属性,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的 。 这是通过使用 Invoke 或 BeginInvoke实现的。 Invoke 是同步的,并且 BeginInvoke 是异步的。 操作将添加到位于指定 DispatcherPriority处的 的事件Dispatcher队列中。
Invoke 是同步操作;因此,在回调返回之前,控件不会返回到调用对象。
适用于
Invoke(Action, DispatcherPriority, CancellationToken, TimeSpan)
在与 Action 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher。
public:
void Invoke(Action ^ callback, System::Windows::Threading::DispatcherPriority priority, System::Threading::CancellationToken cancellationToken, TimeSpan timeout);
public void Invoke (Action callback, System.Windows.Threading.DispatcherPriority priority, System.Threading.CancellationToken cancellationToken, TimeSpan timeout);
member this.Invoke : Action * System.Windows.Threading.DispatcherPriority * System.Threading.CancellationToken * TimeSpan -> unit
Public Sub Invoke (callback As Action, priority As DispatcherPriority, cancellationToken As CancellationToken, timeout As TimeSpan)
参数
- callback
- Action
要通过调度程序调用的操作委托。
- priority
- DispatcherPriority
确定相对于 中的其他挂起操作调用指定回调的顺序的 Dispatcher优先级。
- cancellationToken
- CancellationToken
指示是否取消操作的对象。
- timeout
- TimeSpan
等待操作开始的最长时间。 开始操作后,它将在此方法返回之前完成。 若要指定无限等待,请使用值 -1。 在同一线程调用中,任何其他负值都转换为 -1,从而导致无限等待。 在跨线程调用中,任何其他负值都 ArgumentOutOfRangeException引发 。
例外
callback
为 null
。
timeout
是除 -1 之外的负数,此方法跨线程调用。
priority
不是有效的优先级。
取消令牌已取消。 此异常存储在返回的任务中。
适用于
Invoke(DispatcherPriority, TimeSpan, Delegate)
按指定的优先级并使用指定的超时值在创建 Dispatcher 的线程上同步执行指定的委托。
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, TimeSpan timeout, Delegate ^ method);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, TimeSpan timeout, Delegate method);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * TimeSpan * Delegate -> obj
Public Function Invoke (priority As DispatcherPriority, timeout As TimeSpan, method As Delegate) As Object
参数
- priority
- DispatcherPriority
相对于事件队列中 Dispatcher 调用指定方法的其他挂起操作的优先级。
- timeout
- TimeSpan
等待操作开始的最长时间。 开始操作后,它将在此方法返回之前完成。 若要指定无限等待,请使用值 -1。 在同一线程调用中,任何其他负值都转换为 -1,从而导致无限等待。 在跨线程调用中,任何其他负值都 ArgumentOutOfRangeException引发 。
- method
- Delegate
对不采用任何参数的方法的委托,该委托将被推送到 Dispatcher 事件队列中。
返回
正在被调用的委托的返回值,如果该委托没有返回值,则为 null
。
- 属性
例外
method
为 null
。
timeout
是除 -1 之外的负数,此方法跨线程调用。
priority
等于 Inactive。
priority
不是有效的优先级。
注解
在 WPF 中,只有创建 的 DispatcherObject 线程可以访问该对象。 例如,从main UI 线程中分离的后台线程无法更新在 UI 线程上创建的 的内容Button。 为了使后台线程能够访问 的 ButtonContent 属性,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的 。 这是通过使用 Invoke 或 BeginInvoke实现的。 Invoke 是同步的,并且 BeginInvoke 是异步的。 操作将添加到位于指定 DispatcherPriority处的 的事件Dispatcher队列中。
Invoke 是同步操作;因此,在回调返回之前,控件不会返回到调用对象。
适用于
Invoke(DispatcherPriority, Delegate, Object)
按指定的优先级并使用指定的参数在与 Dispatcher 关联的线程上同步执行指定的委托。
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method, System::Object ^ arg);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, Delegate method, object arg);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * Delegate * obj -> obj
Public Function Invoke (priority As DispatcherPriority, method As Delegate, arg As Object) As Object
参数
- priority
- DispatcherPriority
相对于事件队列中 Dispatcher 调用指定方法的其他挂起操作的优先级。
- method
- Delegate
对采用一个参数的方法的委托,该委托将被推送到 Dispatcher 事件队列中。
- arg
- Object
作为参数传递到给定方法中的对象。
返回
正在被调用的委托的返回值,如果该委托没有返回值,则为 null
。
- 属性
例外
priority
等于 Inactive。
priority
不是有效的优先级。
method
为 null
。
注解
arg
如果不需要参数,可以是null
在 WPF 中,只有创建 的 DispatcherObject 线程可以访问该对象。 例如,从main UI 线程中分离的后台线程无法更新在 UI 线程上创建的 的内容Button。 为了使后台线程能够访问 的 ButtonContent 属性,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的 。 这是通过使用 Invoke 或 BeginInvoke实现的。 Invoke 是同步的,并且 BeginInvoke 是异步的。 操作将添加到位于指定 DispatcherPriority处的 的事件Dispatcher队列中。
Invoke 是同步操作;因此,在回调返回之前,控件不会返回到调用对象。
适用于
Invoke(Delegate, TimeSpan, DispatcherPriority, Object[])
用与 Dispatcher 关联的线程上的指定参数,按指定优先级同步执行指定时间范围内的指定委托。
public:
System::Object ^ Invoke(Delegate ^ method, TimeSpan timeout, System::Windows::Threading::DispatcherPriority priority, ... cli::array <System::Object ^> ^ args);
public object Invoke (Delegate method, TimeSpan timeout, System.Windows.Threading.DispatcherPriority priority, params object[] args);
member this.Invoke : Delegate * TimeSpan * System.Windows.Threading.DispatcherPriority * obj[] -> obj
Public Function Invoke (method As Delegate, timeout As TimeSpan, priority As DispatcherPriority, ParamArray args As Object()) As Object
参数
- method
- Delegate
对采用 args
中指定参数的方法的委托,该委托将被推送到 Dispatcher 事件队列中。
- timeout
- TimeSpan
等待操作开始的最长时间。 开始操作后,它将在此方法返回之前完成。 若要指定无限等待,请使用值 -1。 在同一线程调用中,任何其他负值都转换为 -1,从而导致无限等待。 在跨线程调用中,任何其他负值都 ArgumentOutOfRangeException引发 。
- priority
- DispatcherPriority
相对于事件队列中 Dispatcher 调用指定方法的其他挂起操作的优先级。
- args
- Object[]
作为给定方法的自变量传递的对象数组。 可以为 null
。
返回
正在被调用的委托的返回值,如果该委托没有返回值,则为 null
。
例外
method
为 null
。
timeout
是除 -1 之外的负数,此方法跨线程调用。
priority
等于 Inactive。
priority
不是有效的优先级。
注解
在 WPF 中,只有创建 的 DispatcherObject 线程可以访问该对象。 例如,从main UI 线程中分离的后台线程无法更新在 UI 线程上创建的 的内容Button。 为了使后台线程能够访问 的 ButtonContent 属性,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的 。 这是通过使用 Invoke 或 BeginInvoke实现的。 Invoke 是同步的,并且 BeginInvoke 是异步的。 操作将添加到位于指定 DispatcherPriority处的 的事件Dispatcher队列中。
Invoke 是同步操作;因此,在回调返回之前,控件不会返回到调用对象。
适用于
Invoke(Delegate, TimeSpan, Object[])
用与 Dispatcher 关联的线程上的指定参数,按指定优先级同步执行指定时间范围内的指定委托。
public:
System::Object ^ Invoke(Delegate ^ method, TimeSpan timeout, ... cli::array <System::Object ^> ^ args);
public object Invoke (Delegate method, TimeSpan timeout, params object[] args);
member this.Invoke : Delegate * TimeSpan * obj[] -> obj
Public Function Invoke (method As Delegate, timeout As TimeSpan, ParamArray args As Object()) As Object
参数
- method
- Delegate
对采用 args
中指定参数的方法的委托,该委托将被推送到 Dispatcher 事件队列中。
- timeout
- TimeSpan
等待操作开始的最长时间。 但是,一旦开始操作,它将在此方法返回之前完成。 若要指定无限等待,请使用值 -1。 在同一线程调用中,任何其他负值都转换为 -1,从而导致无限等待。 在跨线程调用中,任何其他负值都 ArgumentOutOfRangeException引发 。
- args
- Object[]
作为给定方法的自变量传递的对象数组。
null
如果不需要参数,可为 。
返回
正在被调用的委托的返回值,如果该委托没有返回值,则为 null
。
例外
method
为 null
。
timeout
是除 -1 之外的负数,并且你正在跨线程调用。
注解
在 WPF 中,只有创建 的 DispatcherObject 线程可以访问该对象。 例如,从main UI 线程中分离的后台线程无法更新在 UI 线程上创建的 的内容Button。 为了使后台线程能够访问 的 ButtonContent 属性,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的 。 这是通过使用 Invoke 或 BeginInvoke实现的。 Invoke 是同步的,并且 BeginInvoke 是异步的。 操作将添加到位于指定 DispatcherPriority处的 的事件Dispatcher队列中。
Invoke 是同步操作;因此,在回调返回之前,控件不会返回到调用对象。
适用于
Invoke(Action, DispatcherPriority, CancellationToken)
在与 Action 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher。
public:
void Invoke(Action ^ callback, System::Windows::Threading::DispatcherPriority priority, System::Threading::CancellationToken cancellationToken);
public void Invoke (Action callback, System.Windows.Threading.DispatcherPriority priority, System.Threading.CancellationToken cancellationToken);
member this.Invoke : Action * System.Windows.Threading.DispatcherPriority * System.Threading.CancellationToken -> unit
Public Sub Invoke (callback As Action, priority As DispatcherPriority, cancellationToken As CancellationToken)
参数
- callback
- Action
要通过调度程序调用的委托。
- priority
- DispatcherPriority
确定相对于 中的其他挂起操作调用指定回调的顺序的 Dispatcher优先级。
- cancellationToken
- CancellationToken
指示是否取消操作的对象。
例外
取消令牌已取消。 此异常存储在返回的任务中。
适用于
Invoke(DispatcherPriority, Delegate)
以与 关联的线程 Dispatcher 上的指定优先级同步执行指定的委托。
public:
System::Object ^ Invoke(System::Windows::Threading::DispatcherPriority priority, Delegate ^ method);
[System.ComponentModel.Browsable(false)]
public object Invoke (System.Windows.Threading.DispatcherPriority priority, Delegate method);
[<System.ComponentModel.Browsable(false)>]
member this.Invoke : System.Windows.Threading.DispatcherPriority * Delegate -> obj
Public Function Invoke (priority As DispatcherPriority, method As Delegate) As Object
参数
- priority
- DispatcherPriority
调用指定方法时相对于事件队列中其他挂起操作的 Dispatcher 优先级。
- method
- Delegate
对不采用任何参数的方法的委托,该委托将被推送到 Dispatcher 事件队列中。
返回
正在被调用的委托的返回值,如果该委托没有返回值,则为 null
。
- 属性
例外
priority
等于 Inactive。
priority
不是有效的优先级。
method
为 null
。
示例
以下示例使用 Invoke将委托置于 Dispatcher 的 上Normal。
// Places the delegate onto the UI Thread's Dispatcher
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
// Place delegate on the Dispatcher.
this.Dispatcher.Invoke(DispatcherPriority.Normal,
new TimerDispatcherDelegate(TimerWorkItem));
}
' Places the delegate onto the UI Thread's Dispatcher
Private Sub timer_Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
' Place delegate on the Dispatcher.
Me.Dispatcher.Invoke(DispatcherPriority.Normal, New TimerDispatcherDelegate(AddressOf TimerWorkItem))
End Sub
注解
在 WPF 中,只有创建 的 DispatcherObject 线程可以访问该对象。 例如,从main UI 线程中分离的后台线程无法更新在 UI 线程上创建的 的内容Button。 为了使后台线程能够访问 的 ButtonContent 属性,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的 。 这是通过使用 Invoke 或 BeginInvoke实现的。 Invoke 是同步的,并且 BeginInvoke 是异步的。 操作将添加到位于指定 DispatcherPriority处的 的事件Dispatcher队列中。
Invoke 是同步操作;因此,在回调返回之前,控件不会返回到调用对象。
适用于
Invoke(Delegate, Object[])
用与 Dispatcher 关联的线程上的指定参数同步执行指定委托。
public:
System::Object ^ Invoke(Delegate ^ method, ... cli::array <System::Object ^> ^ args);
public object Invoke (Delegate method, params object[] args);
member this.Invoke : Delegate * obj[] -> obj
Public Function Invoke (method As Delegate, ParamArray args As Object()) As Object
参数
- method
- Delegate
对采用 args
中指定参数的方法的委托,该委托将被推送到 Dispatcher 事件队列中。
- args
- Object[]
作为给定方法的自变量传递的对象数组。 可以为 null
。
返回
正在被调用的委托的返回值,如果该委托没有返回值,则为 null
。
注解
在 WPF 中,只有创建 的 DispatcherObject 线程可以访问该对象。 例如,从main UI 线程中分离的后台线程无法更新在 UI 线程上创建的 的内容Button。 为了使后台线程能够访问 的 ButtonContent 属性,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的 。 这是通过使用 Invoke 或 BeginInvoke实现的。 Invoke 是同步的,并且 BeginInvoke 是异步的。 操作将添加到位于指定 DispatcherPriority处的 的事件Dispatcher队列中。
Invoke 是同步操作;因此,在回调返回之前,控件不会返回到调用对象。
适用于
Invoke(Action, DispatcherPriority)
在与 Action 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher。
public:
void Invoke(Action ^ callback, System::Windows::Threading::DispatcherPriority priority);
public void Invoke (Action callback, System.Windows.Threading.DispatcherPriority priority);
member this.Invoke : Action * System.Windows.Threading.DispatcherPriority -> unit
Public Sub Invoke (callback As Action, priority As DispatcherPriority)
参数
- callback
- Action
要通过调度程序调用的委托。
- priority
- DispatcherPriority
确定相对于 中的其他挂起操作调用指定回调的顺序的 Dispatcher优先级。
适用于
Invoke(Action)
在与 Action 关联的线程上同步执行指定的 Dispatcher。
public:
void Invoke(Action ^ callback);
public void Invoke (Action callback);
member this.Invoke : Action -> unit
Public Sub Invoke (callback As Action)
参数
- callback
- Action
要通过调度程序调用的委托。
注解
默认优先级为 DispatcherPriority.Send
。
适用于
Invoke(Delegate, DispatcherPriority, Object[])
按指定的优先级并使用指定的参数在与 Dispatcher 关联的线程上同步执行指定的委托。
public:
System::Object ^ Invoke(Delegate ^ method, System::Windows::Threading::DispatcherPriority priority, ... cli::array <System::Object ^> ^ args);
public object Invoke (Delegate method, System.Windows.Threading.DispatcherPriority priority, params object[] args);
member this.Invoke : Delegate * System.Windows.Threading.DispatcherPriority * obj[] -> obj
Public Function Invoke (method As Delegate, priority As DispatcherPriority, ParamArray args As Object()) As Object
参数
- method
- Delegate
对采用 args
中指定参数的方法的委托,该委托将被推送到 Dispatcher 事件队列中。
- priority
- DispatcherPriority
调用指定方法时相对于事件队列中其他挂起操作的 Dispatcher 优先级。
- args
- Object[]
作为给定方法的自变量传递的对象数组。 可以为 null
。
返回
正在被调用的委托的返回值,如果该委托没有返回值,则为 null
。
注解
在 WPF 中,只有创建 的 DispatcherObject 线程可以访问该对象。 例如,从main UI 线程中分离的后台线程无法更新在 UI 线程上创建的 的内容Button。 为了使后台线程能够访问 的 ButtonContent 属性,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联的 。 这是通过使用 Invoke 或 BeginInvoke实现的。 Invoke 是同步的,并且 BeginInvoke 是异步的。 操作将添加到位于指定 DispatcherPriority处的 的事件Dispatcher队列中。
Invoke 是同步操作;因此,在回调返回之前,控件不会返回到调用对象。
适用于
Invoke<TResult>(Func<TResult>)
在与 Func<TResult> 关联的线程上同步执行指定的 Dispatcher。
public:
generic <typename TResult>
TResult Invoke(Func<TResult> ^ callback);
public TResult Invoke<TResult> (Func<TResult> callback);
member this.Invoke : Func<'Result> -> 'Result
Public Function Invoke(Of TResult) (callback As Func(Of TResult)) As TResult
类型参数
- TResult
指定委托的返回值类型。
参数
- callback
- Func<TResult>
要通过调度程序调用的委托。
返回
callback
返回的值。
适用于
Invoke<TResult>(Func<TResult>, DispatcherPriority)
在与 Func<TResult> 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher。
public:
generic <typename TResult>
TResult Invoke(Func<TResult> ^ callback, System::Windows::Threading::DispatcherPriority priority);
public TResult Invoke<TResult> (Func<TResult> callback, System.Windows.Threading.DispatcherPriority priority);
member this.Invoke : Func<'Result> * System.Windows.Threading.DispatcherPriority -> 'Result
Public Function Invoke(Of TResult) (callback As Func(Of TResult), priority As DispatcherPriority) As TResult
类型参数
- TResult
指定委托的返回值类型。
参数
- callback
- Func<TResult>
要通过调度程序调用的委托。
- priority
- DispatcherPriority
确定相对于 中的其他挂起操作调用指定回调的顺序的 Dispatcher优先级。
返回
callback
返回的值。
适用于
Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken)
在与 Func<TResult> 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher。
public:
generic <typename TResult>
TResult Invoke(Func<TResult> ^ callback, System::Windows::Threading::DispatcherPriority priority, System::Threading::CancellationToken cancellationToken);
public TResult Invoke<TResult> (Func<TResult> callback, System.Windows.Threading.DispatcherPriority priority, System.Threading.CancellationToken cancellationToken);
member this.Invoke : Func<'Result> * System.Windows.Threading.DispatcherPriority * System.Threading.CancellationToken -> 'Result
Public Function Invoke(Of TResult) (callback As Func(Of TResult), priority As DispatcherPriority, cancellationToken As CancellationToken) As TResult
类型参数
- TResult
指定委托的返回值类型。
参数
- callback
- Func<TResult>
要通过调度程序调用的委托。
- priority
- DispatcherPriority
确定相对于 中的其他挂起操作调用指定回调的顺序的 Dispatcher优先级。
- cancellationToken
- CancellationToken
指示是否取消操作的对象。
返回
callback
返回的值。
例外
取消令牌已取消。 此异常存储在返回的任务中。
适用于
Invoke<TResult>(Func<TResult>, DispatcherPriority, CancellationToken, TimeSpan)
在与 Func<TResult> 关联的线程上,以指定的优先级,同步执行指定的 Dispatcher。
public:
generic <typename TResult>
TResult Invoke(Func<TResult> ^ callback, System::Windows::Threading::DispatcherPriority priority, System::Threading::CancellationToken cancellationToken, TimeSpan timeout);
public TResult Invoke<TResult> (Func<TResult> callback, System.Windows.Threading.DispatcherPriority priority, System.Threading.CancellationToken cancellationToken, TimeSpan timeout);
member this.Invoke : Func<'Result> * System.Windows.Threading.DispatcherPriority * System.Threading.CancellationToken * TimeSpan -> 'Result
Public Function Invoke(Of TResult) (callback As Func(Of TResult), priority As DispatcherPriority, cancellationToken As CancellationToken, timeout As TimeSpan) As TResult
类型参数
- TResult
指定委托的返回值类型。
参数
- callback
- Func<TResult>
要通过调度程序调用的委托。
- priority
- DispatcherPriority
确定相对于 中的其他挂起操作调用指定回调的顺序的 Dispatcher优先级。
- cancellationToken
- CancellationToken
指示是否取消操作的对象。
- timeout
- TimeSpan
等待操作开始的最长时间。 开始操作后,它将在此方法返回之前完成。 若要指定无限等待,请使用值 -1。 在同一线程调用中,任何其他负值都转换为 -1,从而导致无限等待。 在跨线程调用中,任何其他负值都 ArgumentOutOfRangeException引发 。
返回
callback
返回的值。
例外
callback
为 null
。
timeout
是除 -1 之外的负数,并且跨线程调用了 方法。
priority
不是有效的优先级。
取消令牌已取消。 此异常存储在返回的任务中。