Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Присвоение 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:

Позвольте полюбопытствовать - а зачем ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо