Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как заставить обновлятся окно программы?  (Прочитано 4244 раз)
0 Пользователей и 1 Гость смотрят эту тему.
borman77
Гость
« : 25-08-2005 07:56 » 

Уже год как мирюсь со следующей проблеммой:
Есть программа которая выполняет достаточно сложные и "тяжелые" вычесления, во время которых хотелось бы отоброжать на окне что происходит.
Процес, впринцепе, вызывает одну и ту же функцию через for. после каждого вызова функции я пытался ставить и Refresh  и  Invalidate.
В обоих случаях окно обновляется до тех пор пока по нему не щелкнуть мышкой, или не открыть что то другое ( папку винды например). После чего окно замерзает до окончания процесса.

Единственное решение которое нашел - ползовать Aplication.Doevents(); но это, на мой взгляд, нецелесообразно т.к. я не собираюсь прерывать или процесс или менять какие-то значения.

Есть другие пути? 
Записан
Alf
Гость
« Ответ #1 : 25-08-2005 08:26 » 

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

Отображать процесс обработки можно либо по таймеру, если обработка идет достаточно равномерно, либо по событиям.
Записан
borman77
Гость
« Ответ #2 : 27-08-2005 20:04 » 

Ммммм... а можно ссылку на какой нибуть материал по выделению в отдельный поток и работы с ним? потому что то-ли я терминологию недопонял, толи незнаком с этим методом, но не понял про что речь.
Спасибо!  Так больше нельзя...
Записан
Alf
Гость
« Ответ #3 : 27-08-2005 21:12 » 

Если раньше не доводилось работать с многопоточными приложениями, тогда, наверное, лучше всего начать с MSDN: http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/cpref/html/frlrfsystemthreadingthreadclasstopic.asp

Имеет смысл также порыться в библиотеке клуба, там наверняка найдется что-либо по этой теме.
Записан
borman77
Гость
« Ответ #4 : 28-08-2005 19:17 » 

Спасибо!
Также нашел что-то попроще и подоступней:
http://www.gotdotnet.ru/LearnDotNet/WinForms/599.aspx
это первая статья из трех по этой теме. Пока читаю - все доступно и понятно. Может кому еще будет интересно.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines