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

Вниз

Создание объектов в потоках TSocketServer   Найти похожие ветки 

 
victorgugo   (2010-02-22 01:53) [0]

Здравствуйте!
Задача следующая: есть блокирующий TSocketServer. Соответственно при получении потока (GetThread) нужно для каждого этого потока создавать объекты доступа к БД, а при отключении - разрушать их. В главном модуле:
procedure TForm1.ServerSocket1GetThread(Sender: TObject;
 ClientSocket: TServerClientWinSocket; var SocketThread: TServerClientThread);
begin
SocketThread:=TServerThread.Create(True, ClientSocket);
SocketThread.Priority:=tpLower;
SocketThread.Resume;
end;

TServerThread - клас описанный в отдельном модуле, унаследованный от TServerClientThread.
В процедуре ClientExecute класа TServerThread создаём компоненты доступа:
IBTransaction1.Create(Application);
IBDataBase1.Create(Application);
IBQuery1.Create(Application);


При компиляции ошибок не выдаёт, но как только подключается клиент:
First chance exception at $7C812AFB. Exception class EAccessViolation with message "Access violation at address 004A1B52 in module "Project1.exe". Read of address 00000EA8". Process Project1.exe (1032)

Вместо Application в IBTransaction1.Create(Application); пробовал и Form1 и другие компоненты, все время такая ошибка.

Вопрос: как безболезнено создать объекты для потока сервера TServerSocket?

Заранее спасибо


 
victorgugo   (2010-02-22 02:22) [1]


> IBTransaction1.Create(Application);IBDataBase1.Create(Application);
> IBQuery1.Create(Application);


Вот что бывает, когда долго не пишешь на Делфи. Я уже и забыл как объекты создавать:
IBTransaction1 := TIBTransaction.Create(Application);
IBDataBase1 := TIBDataBase.Create(Application);
IBQuery1 := TIBQuery.Create(Application);

Всё работает))))


 
Сергей М. ©   (2010-02-23 22:09) [2]

> Всё работает

До поры до времени.
Грабли совсем близко.


 
victorgugo   (2010-02-24 00:17) [3]


> До поры до времени.Грабли совсем близко.

Может покажете где приблизительно эти грабли?


 
Сергей М. ©   (2010-02-24 08:24) [4]

В доп.потокее обращения к визуальным VCL-объектам недопустимы.
Таким объектом в дан.случае является объект Application.


 
Slym ©   (2010-02-24 11:00) [5]

victorgugo   (22.02.10 2:22) [1]
+1 [4]
передавай nil Create(nil) если не знаешь зачем оно туда передается...



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

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

Наверх




Память: 0.48 MB
Время: 0.009 c
2-1349594839
alexdn
2012-10-07 11:27
2013.04.14
Совершенно не понятный эффект


4-1264548546
hattak
2010-01-27 02:29
2013.04.14
Скриншот свёрнутого окна


15-1355571069
OLEG1963LORA
2012-12-15 15:31
2013.04.14
Аппаратное обеспечение


6-1266792836
victorgugo
2010-02-22 01:53
2013.04.14
Создание объектов в потоках TSocketServer


15-1355949002
Юрий
2012-12-20 00:30
2013.04.14
С днем рождения ! 20 декабря 2012 четверг