Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.045 c
1-1103617605
Igor_thief
2004-12-21 11:26
2005.01.16
ImageLit


14-1103965671
Rouse_
2004-12-25 12:07
2005.01.16
C Днем Рождения 25 Декабря


3-1103095185
PereZ
2004-12-15 10:19
2005.01.16
Поиск таблиц содержащих искомое поле


1-1104161681
Дмитрий К.
2004-12-27 18:34
2005.01.16
Предпросмотр WEB страницы


4-1099159534
pika
2004-10-30 22:05
2005.01.16
как выключить компьютер ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский