Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

Форма - поток, поток - форма. Запутался совсем.   Найти похожие ветки 

 
TTCustomDelphiMaster ©   (2002-11-29 21:18) [0]

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

Выскажите свои соображения как разрубить этот "гордеев узел".
Заранее спасибо.


 
vuk ©   (2002-11-29 21:54) [1]

Встречный вопрос, если главная форма при проверке существования каталогов недоступна, зачем нужно выносить проверку каталогов в отдельный поток? Какая разница, "тормозится" форма или нет, если она не доступна? Или я чего не понял?


 
TTCustomDelphiMaster ©   (2002-11-29 22:06) [2]

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


 
vuk ©   (2002-11-29 22:08) [3]

Чтобы она перерисовывалась, достаточно периодически вызывать Application.ProcessMessages.


 
TTCustomDelphiMaster ©   (2002-11-29 22:14) [4]

Я знаю. Но если папка в сети недоступна комп будет думать несколько секунд, в это время вместо формы может образоваться большое белое пятно. Некрасиво это как то.


 
Юрий Зотов ©   (2002-11-29 22:18) [5]

Создавайте поток не в первой, а в prоgress-форме, а ее саму показывайте из первой, в основном потоке, модально, вот и все. Всегда использую эту схему и никаких проблем не было.


 
vuk ©   (2002-11-29 22:19) [6]

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


 
TTCustomDelphiMaster ©   (2002-11-29 22:58) [7]

Юрий Зотов спасибо. Действительно очевидное решение. Как это я не догадался. Наверное перегрелся, то есть перетрудился.

vuk спасибо. Через сообщения конечно же хорошо, но не для моего случая. Мне еще текст надо менять в label и т.д... Хотя наверное стоит послать сообщение форме при завершении потока, для того чтобы она закрылась.



Страницы: 1 вся ветка

Текущий архив: 2002.12.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-28088
antoniz
2002-11-28 10:04
2002.12.09
Подскажите по QuickReport


14-28234
Николай Быков
2002-11-14 13:32
2002.12.09
Как вым такой план?


14-28276
esv
2002-11-17 19:13
2002.12.09
TinyDB v2.9


1-28103
d_v_i
2002-11-28 13:39
2002.12.09
Будте добры! Как разложить BMP на пиксели с соответ-ем цветом


3-27891
BorisUK
2002-11-21 13:36
2002.12.09
MIDAS RemoteDataModule