微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当另一个应用程序全屏运行时,WPF 应用程序无法正确绘制

如何解决当另一个应用程序全屏运行时,WPF 应用程序无法正确绘制

我的应用程序比下面的要复杂一些,但我已将问题提炼为一个简单的案例。

我有一个绑定到对象属性的文本框。在应用程序内部工作时,绑定工作正常。

我的应用程序在另一个线程中运行 TCP 服务器,该服务器接收来自我为游戏创建的 mod 的消息(游戏是 Binding of Isaac,如果有帮助的话)。当用户在游戏中按下某个键时,mod 会向我的应用程序发送消息。当服务器收到消息时,它会通过应用程序的调度程序调用绑定属性的更改,如下所示:

App.Current.dispatcher.Invoke(delegate
{
    TestModel.Number = sum;
});

这在游戏窗口时工作正常;文本框根据消息更新并正确绘制。但是,当游戏处于全屏模式时,并且我在发送消息后按 alt-tab 返回到我的应用程序时,文本框文本直到我将鼠标悬停在鼠标上方时才会更新。我很确定文本框的文本值已正确更新,但它只是在游戏全屏时不会重绘,鼠标悬停会触发重绘。

奇怪的是,在启动我的应用程序的前 10 秒左右,即使游戏全屏显示,文本框也会正确更新。之后,问题就开始了。

我将不胜感激任何见解或解决方案。

解决方法

可能是驱动程序问题。尝试在启动时禁用硬件加速:

RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;

性能会受到影响,但应该可以正常渲染。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。