Как сохранить отзывчивый пользовательский интерфейс при обработке больших объемов данных? - PullRequest
5 голосов
/ 27 декабря 2010

Я создаю winform для обработки (преобразования txt файлов в tiff) большого количества файлов.Я положил весь код за кнопку (btnProcess).Это хорошая идея?Это работает, но я заметил, что когда я ухожу из winform и возвращаюсь к этому, я вижу пустое окно, пока процесс не завершится.Я слышал о фоновом работнике.какова цель фонового работника?

Ответы [ 3 ]

9 голосов
/ 27 декабря 2010

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

Цель BackgroundWorker - запустить операцию в новом потоке, и это то, что вам нужно.

3 голосов
/ 27 декабря 2010

BackgroundWorker class

Класс BackgroundWorker позволяет вам запустить операцию на отдельном, специальная тема. Кропотливый операции, такие как загрузки и базы данных транзакции могут вызвать ваш пользователь интерфейс (UI), чтобы казаться, как будто это перестал отвечать, пока они Бег. Когда вы хотите адаптивный интерфейс и вы столкнулись с длительными задержками связанные с такими операциями, Класс BackgroundWorker предоставляет удобное решение.

Страница, на которую я ссылался выше, содержит полный пример BackgroundWorker .

2 голосов
/ 27 декабря 2010

Это зависит от вашего приложения.Если это одноцелевое приложение, которое не очень длинное и единственная проблема - экран не рисует.Вот как это звучит для меня, просто бросьте Application.DoEvents в цикл и покончите с этим.

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