Как заставить Windows формировать отзывчивый пользовательский интерфейс? - PullRequest
3 голосов
/ 15 октября 2008

Это общая проблема для всех разработчиков, я ищу лучшее решение, чтобы сделать интерфейс Windows Form отзывчивым.

У меня есть анимированный GIF-файл, показывающий ход моих расчетов в форме Windows. Я взял контроль над картинкой и вставил в него анимированный GIF. теперь, когда начинается мой расчет - анимационный gif-файл зависает. Я хочу наоборот, анимация должна быть видна, когда я выполняю расчет.

Есть какие-нибудь мысли к делу? Простое решение - показать пользователю индикатор выполнения, выполняя сложные вычисления за сценой

Мое приложение представляет собой однопоточное приложение, и я хочу простое решение, не требующее многопоточности или технологий фонового рабочего типа.

Любая помощь?

Ответы [ 5 ]

9 голосов
/ 15 октября 2008

Несколько тем будет моей рекомендацией. Немного грязно с первой попытки;)

Простейшая модель: один поток для графического интерфейса и один поток для любой работы, которую вам нужно сделать.

Проверьте эту ссылку .

5 голосов
/ 15 октября 2008

Application.DoEvents

Вы помещаете это в петлю. Это дает UI время, чтобы делать свои вещи.

3 голосов
/ 15 октября 2008

Что ж, единственный реальный способ сделать 2 вещи одновременно (например, выполнить вычисления и по-прежнему реагировать) - это использовать потоки. Если вы не хотите явно использовать потоки, проверьте, есть ли какие-либо асинхронные вызовы, которые можно использовать для выполнения в фоновом режиме. Кроме того, выполняйте много вызовов Application.DoEvents везде, где вы выполняете много работы.

2 голосов
/ 17 октября 2008

"простое решение для отображения прогресса для пользователя при выполнении сложных расчетов за кулисами?"

"Не ищите многопоточных или фоновых технологий."

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

2 голосов
/ 15 октября 2008

Я собираюсь разместить сайт Джеффа на этом:

Ужасы при кодировании: DoEvents Evil?

...