gpt4 book ai didi

wpf - 在 WPF 页面中需要有关 Dispatcher.PushFrame 样式进程阻塞的帮助

转载 作者:行者123 更新时间:2023-12-04 15:37:17 27 4
gpt4 key购买 nike

我正在使用 Dispatcher.PushFrame 来阻止我的代码,同时允许 UI 刷新,直到一个长时间运行的进程完成。只要我对 Dispatcher.PushFrame 的调用来自按钮单击事件,这就会按预期工作。但是,如果我在 Page 的 Loaded 事件或构造函数期间使用相同的代码,则 UI 不会刷新,因此从不绘制。作为一个随机实验,我尝试使用构造函数中的 Window.ShowDialog,它确实允许 UI 进行绘制,即使在模式对话框关闭之前控件被阻止。任何人都可以提供一个解决方案来允许使用 Dispatcher.PushFrame 或其他一些手动机制从 Page Loaded 事件中获得此功能吗?

作为附录,如果我最小化或最大化我的窗口,UI 会绘制并且我可以正常与其交互,但直到我手动执行调整大小。

最佳答案

来自我在 Object Lifetime Events 上的 MSDN 上的阅读并在 Reflector 中徘徊,看来 LoadedUnloaded事件的引发方式与其他事件不同。内部一个 BroadcastEventHelper使用类,它协调各种 Loaded可视化树中每个元素之间的事件,然后最终在 DispatcherPriority.Loaded 上引发它们等级。

我相信这就是您看到这种行为的原因。

至于具体的解决方案,我建议长时间运行的任务不要放在Page.Loaded事件处理程序,而不是 BackgroundWorkerTask发出以完成工作。

关于wpf - 在 WPF 页面中需要有关 Dispatcher.PushFrame 样式进程阻塞的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4866952/

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