![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Присвоение TDataBase.DataBaseName приводит к AV... [D7, MSSQL, Paradox]
Aleksandr © (2004-10-20 14:04:00)В многопоточном приложении в Execute каждого потока создается экземпляр TDataBase:
var
pS : TSession;
pD : TDataBase;
begin
WaitForSingleObject(TSCPT, 100000);
pS:=TSession.Create(nil);
pD:=TDataBase.Create(nil);
try
pS.SessionName:='px'+IntToStr(Random(4000)+1);
Ps.Name:='psession'+ps.SessionName;
pD.HandleShared:=true;
pD.DatabaseName:=FDir;
...
Код я оставил по строчку pD.DatabaseName:=FDir;по той причине, что выполнение этой строки время от времени вызывает в потоке EAccessViolation. FDir - свойство потока, передаваемое ему в констрактор, является папкой, в которой будет работать поток с таблицей парадокса. На три десятка потоков таких папок 4 штуки.
Aleksandr. (2004-10-20 20:32:00) [1]msguns © :
А Вы полагаете, что с BDE разные потоки могут работать через один TDataBase?
msguns (2004-10-20 16:37:00) [2]>В многопоточном приложении в Execute каждого потока создается экземпляр TDataBase:
Позвольте полюбопытствовать - а зачем ?