Окна приложения WPF не обновляются полностью после пробуждения экрана - PullRequest
5 голосов
/ 26 января 2011

Сегодня мы обнаружили небольшую странную проблему в одном из наших приложений WPF, и мы не совсем уверены, как ее решить. Когда мы запускаем программное обеспечение на одном из наших ноутбуков, экран переходит в спящий режим (становится черным) через некоторое время, когда нет взаимодействия с пользователем. Само приложение по-прежнему занята загрузкой данных из интернета и заполнением таблиц в базе данных. Также есть индикатор выполнения и строка состояния.

Если мы просыпаем экран простым движением мыши, программа отображается снова, но некоторые части окна не обновляются. Индикатор выполнения по-прежнему показывает значения, даже если процесс завершен, а строка состояния также неверна.

С этого времени вы можете работать с программой, как будто ничего не произошло, но индикатор выполнения и строка состояния будут перерисовываться только в том случае, если вы свернете полное окно на панель задач и снова развернете его. Или если вы запустите другое действие, которое также будет использовать индикатор выполнения или строку состояния.

Это странное поведение вызвало много недоразумений, потому что отображаемые данные кажутся неправильными после пробуждения экрана, и вам нужно свернуть и развернуть окно, чтобы увидеть, что происходит на самом деле.

Что здесь не так?

Ответы [ 3 ]

2 голосов
/ 08 февраля 2011

Обновлены ли драйверы видео?Если нет, вы можете попробовать обновить их.WPF использует видео оборудование для его рендеринга.У меня были некоторые проблемы с обновлением, и новые драйверы это исправили.

0 голосов
/ 23 мая 2015

У меня та же проблема и нет решения, но простой пример, который приводит к описанному поведению.Может быть, это помогает при поиске ошибок.

<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>
0 голосов
/ 08 февраля 2011

Убедитесь, что фоновая операция не перегружает поток пользовательского интерфейса.Но, как предполагает Кори, это может быть проблема с драйвером видео.

...