Форум: "Сети";
Текущий архив: 2013.04.14;
Скачать: [xml.tar.bz2];
ВнизСоздание объектов в потоках 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c