Действительно ли фоновый поток полезен, если мы регулярно обновляем наш графический интерфейс? - PullRequest
0 голосов
/ 10 февраля 2011

Мне было интересно, действительно ли фоновый поток полезен, если мне нужно регулярно обновлять свой графический интерфейс (довольно часто в моем случае) ??Я работаю над приложением WPF (C #).Открывая старый файл проекта, я выполнил всю обработку в фоновом потоке, однако графический интерфейс отображает прогресс и требует регулярного обновления.

Так что фоновый поток действительно поможет в этом случае.Что если я перенесу эту обработку в основной поток (как обычно, в противном случае я ничего не делаю, просто ожидаю загрузки файла)?

Найдено !!Спасибо,

Ответы [ 4 ]

3 голосов
/ 10 февраля 2011

Ну, нужно учитывать, что не обновляет прогресс довольно часто.Собирается ли пользователь заметить разницу между его обновлением 100 раз в секунду и обновлением 10 раз в секунду?Возможно, вы захотите пакетные обновления.Сказав это, если только обновления на самом деле не станут проблематичными с точки зрения производительности, я бы не принял удар по сложности.

Однако, если вы выполняете значительный объем работы, выдолжно быть абсолютно в фоновом потоке.В противном случае ваш пользовательский интерфейс перестанет отвечать на запросы во время выполнения этой работы - и, в зависимости от некоторых деталей, обновления прогресса могут вообще не отображаться!

Даже если ваш код может ничего не делатьиначе поток пользовательского интерфейса все еще хочет иметь возможность реагировать на события - движения мыши и т. д.

0 голосов
/ 10 февраля 2011

Вы не должны использовать фоновый поток, если:

  • Ваш код занимает очень короткое время, чтобы быть замеченным пользователем
  • Ваш код занимает очень длительный период времени, но выне волнует заголовок окна «Не отвечает» и разочарованные пользователи.

Если серьезно, они полезны, если вы хотите создать отзывчивый пользовательский интерфейс.Вот замечательные вводные статьи от Ли Кэмпбелла: Отзывчивый пользовательский интерфейс в WPF - диспетчеры параллелизма к тестируемости

0 голосов
/ 10 февраля 2011

Вы должны загрузить файл в другой поток и запускать события в процессе. Mainthread должен прослушивать эти события и обновлять графический интерфейс.

0 голосов
/ 10 февраля 2011

Вы должны определенно посмотреть заметку WPF 4 PDC за 2009 год. Она звучит устаревшей, но показывает несколько способов выполнения "обширных" задач несколькими способами (например, фоновый работник).

http://www.microsoftpdc.com/2009/CL10

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...