gpt4 book ai didi

wpf - UI 在 WPF 应用程序中停止呈现

转载 作者:行者123 更新时间:2023-12-04 12:58:26 26 4
gpt4 key购买 nike

我有一个 WPF 应用程序,它的行为似乎是随机的。运行一段时间后,UI 停止渲染。它根本没有更新,最后更新的 View 一直显示。鼠标悬停操作不会像通常那样触发复选框和其他项目的标记。如果我最小化应用程序并再次恢复它,整个窗口就会变黑。这不是 UI 线程被占用的问题,应用程序仍然响应。例如,如果我右键单击鼠标,就会出现上下文菜单,我可以像往常一样从中选择菜单项。如果该项目打开一个对话框,该对话框会出现并正常运行,但底层 UI 仍未呈现。 UI 中的所有按钮都是可点击的,即使它们在 UI 变黑后不可见。将鼠标悬停在带有工具提示的项目上时会弹出工具提示。

当应用程序运行一段时间后离开计算机时,这种情况经常发生。

有人见过这种行为吗?任何可能导致它的想法?我该如何调试?我什至不知道从哪里开始。

编辑:我在 UI 卡住时运行了 Ants Performance Profiler,“% Processor Time”接近 - 有时超过 - 100%。

编辑:事实证明,每次我进入 Windows 锁定屏幕并再次返回时都会发生这种情况。我不知道为什么会发生这种情况,但这与自定义依赖属性有关,该属性用于对 SetWindowLong、GetWindowLong 和 SetWindowPos 进行 p/invoke 调用。依赖属性按预期工作,但从 Windows 锁定屏幕返回时除外。不使用它是问题的“解决方案”。

最佳答案

我现在正面临这个:-(

在四处挖掘之后,我在使用 BitmapCacheBrush 和 BitmapCache 的新样式中找到了原因。

在这里查看repro:https://github.com/dotnet-campus/wpf-issues/tree/master/BitmapCache

一个快速修复是使用机器范围的注册表设置禁用全局硬件加速:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration

https://stackoverflow.com/a/2169657/1196586

或针对特定的 wpf-control/Window
RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;

https://stackoverflow.com/a/9802870/1196586

或者干脆不使用 BitmapCache。

归功于:
https://weblog.west-wind.com/posts/2017/Feb/13/Video-Rendering-Issues-for-WPF-Windows#workaround-disable-hardware-acceleration

关于wpf - UI 在 WPF 应用程序中停止呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24997834/

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