Dispatcher.PushFrame(DispatcherFrame) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
进入执行循环。
public:
static void PushFrame(System::Windows::Threading::DispatcherFrame ^ frame);
[System.Security.SecurityCritical]
public static void PushFrame (System.Windows.Threading.DispatcherFrame frame);
public static void PushFrame (System.Windows.Threading.DispatcherFrame frame);
[<System.Security.SecurityCritical>]
static member PushFrame : System.Windows.Threading.DispatcherFrame -> unit
static member PushFrame : System.Windows.Threading.DispatcherFrame -> unit
Public Shared Sub PushFrame (frame As DispatcherFrame)
参数
- frame
- DispatcherFrame
调度程序要处理的帧。
- 属性
例外
frame
为 null
。
HasShutdownFinished 为 true
或 -
frame
在不同的 Dispatcher 中运行。或 - 已禁用对调度程序的处理。
示例
以下示例演示如何使用 a DispatcherFrame 实现与Windows 窗体DoEvents方法类似的结果。
public void DoEvents()
{
DispatcherFrame frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
new DispatcherOperationCallback(ExitFrame), frame);
Dispatcher.PushFrame(frame);
}
public object ExitFrame(object f)
{
((DispatcherFrame)f).Continue = false;
return null;
}
<SecurityPermissionAttribute(SecurityAction.Demand, Flags := SecurityPermissionFlag.UnmanagedCode)>
Public Sub DoEvents()
Dim frame As New DispatcherFrame()
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, New DispatcherOperationCallback(AddressOf ExitFrame), frame)
Dispatcher.PushFrame(frame)
End Sub
Public Function ExitFrame(ByVal f As Object) As Object
CType(f, DispatcherFrame).Continue = False
Return Nothing
End Function
注解
表示 DispatcherFrame 处理挂起的工作项的循环。
调度程序在循环中处理工作项队列。 循环称为帧。 初始循环通常由应用程序通过调用来 Run启动。
PushFrame 输入由参数 frame
表示的循环。 在循环的每个迭代中,将 Dispatcher 检查 Continue 类上的 DispatcherFrame 属性,以确定循环是否应继续,还是应该停止。
DispatcherFrame 允许 Continue 显式设置属性,并尊重 HasShutdownStarted 属性上的 Dispatcher属性。 这意味着,当开始关闭时 Dispatcher ,使用默认 DispatcherFrame 实现的帧将退出,这使所有嵌套帧都能够退出。