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

Вниз

БД + потоки   Найти похожие ветки 

 
Zilog ©   (2004-12-14 10:47) [0]

в потоке работаю с БД (стандартные компоненты), в том числе происходит обращение и к главной форме.

При закрытии программы (поток завершает свою работу раньше) возникает ошибка - недопустимый дескрипотор окна. Что я неправильно делаю?


 
Digitman ©   (2004-12-14 10:58) [1]

код метода Execute покажи


 
Zilog ©   (2004-12-14 11:24) [2]

procedure TReportThread.Execute;
begin

 FMain.TabControl1.Cursor := crHourGlass;
 FMain.TabControl1.Enabled := false;
 FMain.Panel14.Visible := true;

 Report; << работа с БД тут

 Fmain.DBGridReport.Refresh;
 FMain.Panel14.Visible := false;
 FMain.TabControl1.Enabled := true;
 FMain.TabControl1.Cursor := crDefault;

end;


 
Digitman ©   (2004-12-14 11:34) [3]


> Zilog ©   (14.12.04 11:24) [2]


обращения к VCL-объектам (в 1-ю очередь - визуальным) из доп.код.потока недопустимы без синхронизации с осн.код.потоком

см.метод TThread.Synchronize и пример его использования в демо-проекте threads.dpr


 
stone ©   (2004-12-14 11:35) [4]

Когда поток создаешь, там про метод Synchronize написано. Читал?


 
Zilog ©   (2004-12-14 12:01) [5]

прочитал, переделал:

 Synchronize(Start);
 Synchronize(Report);
 Synchronize(Stop);

Верно?

Только в таком случае, при работе блокируется управление главной формой, это нормально?


 
Digitman ©   (2004-12-14 12:08) [6]


> Верно?


неверно.
зачем ты все подряд синхронизируешь ? весь смысл использования доп.код.потока пропадает при этом.

синхронизация требуется лишь для тех методов/св-в VCL-объектов, к которым потенциально возможны обращения со строны осн.код.потока


 
Zilog ©   (2004-12-14 12:11) [7]

уже разобрался, спасибо. всё работает таким образом:
Synchronize(Start);
Report;
Synchronize(Stop);



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

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

Наверх




Память: 0.48 MB
Время: 0.027 c
14-1103870137
Жук
2004-12-24 09:35
2005.01.16
Сломали ?


4-1101570504
Dmitry_04
2004-11-27 18:48
2005.01.16
Есть ли разница обработки сообщения в программе?


3-1103005593
leonon
2004-12-14 09:26
2005.01.16
EVariantError - При вызове Locate


3-1102679847
Lost3000
2004-12-10 14:57
2005.01.16
Нет русского при закачке файла DBF (FoxPro 2.6)


1-1104161942
Sashok
2004-12-27 18:39
2005.01.16
Помогите пожалуйста!