屏幕从睡眠状态唤醒后,WPF应用程序窗口无法完全刷新

时间:2011-01-26 16:04:11

标签: wpf screen redraw

今天我们在一个WPF应用程序中发现了一个奇怪的问题,我们并不确定如何处理它。当我们在我们的一台笔记本电脑上运行该软件时,屏幕会在没有用户交互的情况下暂时进入睡眠状态(变黑)。应用程序本身仍然忙于从Internet下载数据并填充数据库中的表。还有一个进度条和状态栏。

如果我们只是通过移动鼠标唤醒屏幕,程序会再次显示,但窗口的某些部分不会刷新。即使进程已完成且状态栏也错误,进度条仍显示值。

从此时起,您可以使用该程序,就像没有发生任何事情一样,但只有最小化完成任务栏的窗口并再次最大化时,才会重新绘制进度条和状态栏。或者,如果您启动另一个也将使用进度条或状态栏的操作。

这种奇怪的行为引起了很多混乱,因为屏幕从睡眠状态唤醒后显示的数据似乎是错误的,你需要最小化并最大化窗口才能看到真正发生的事情。

这里有什么问题?

3 个答案:

答案 0 :(得分:2)

视频驱动程序是最新的吗?如果没有,您可以尝试更新它们。 WPF利用视频硬件进行渲染。我以前遇到过一些令人耳目一新的问题,新的司机修了它。

答案 1 :(得分:0)

确保后台操作不会占用UI线程。但正如科里所说,这可能是视频驱动程序的问题。

答案 2 :(得分:0)

我有同样的问题,没有解决方案,但是一个导致描述行为的简单示例。可能有助于错误搜索。

<Window x:Class="BlackAfterMinimize.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" SizeToContent="WidthAndHeight" WindowState="Minimized">
  <Grid>
    <TextBlock Text="Hello World" />
  </Grid>
</Window>