Здравствуйте!
Задача следующая: есть блокирующий 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?
Заранее спасибо