gpt4 book ai didi

c# - WPF DispatcherFrame 魔术 - 这是如何以及为什么起作用的?

转载 作者:行者123 更新时间:2023-11-30 20:40:44 29 4
gpt4 key购买 nike

我试图在 WPF 中制作一些动画,并在动画结束时运行一些其他操作。

另外,想避免动画完成回调机制,所以,我想出了一个解决方案,如下面的代码所示:

// Start one second of animation
...

// Pause for one second
Wait(this.Dispatcher, 1000);

// Continue and do some other stuff
...

现在,有趣的部分是 Wait 方法,它神奇地使我的代码中的阻塞暂停动画和 UI 保持正常,响应:

    public static void Wait(Dispatcher Dispatcher, int Milliseconds)
{
var Frame = new DispatcherFrame();
ThreadPool.QueueUserWorkItem(State =>
{
Thread.Sleep(Milliseconds);
Frame.Continue = false;
});
Dispatcher.PushFrame(Frame);
}

我已经阅读了有关 DispatcherFrame 的文档和几篇文章,但我仍然无法弄清楚引擎盖下到底发生了什么,我需要一些关于如何使用 构建的澄清PushFrame 确实有效。

最佳答案

来自 MSDN :

PushFrame

Enters an execute loop.

只要其 Continue 属性为 true,该循环(即 DispatcherFrame)就会执行。

只要 Continue 属性变为 false,就会退出循环/帧,并且 Dispatcher 会返回到它在您调用 PushFrame 之前执行的循环/帧。

关于c# - WPF DispatcherFrame 魔术 - 这是如何以及为什么起作用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33002966/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com