Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];




Вниз

ACCESS и threads 


ghost_by   (2002-03-14 21:19) [0]

Можно ли как-нибудь их померить?....
Есть DataModule, есть некоторое количество нитей, все они (нити) должны использовать данный DataModule, но что-то ни в какую - Access Vialation ... и т.д. Никакая синхронизация не помогает....

Можно ли это как-то исправить, т.е. заставить работать?



ghost_by   (2002-03-15 15:44) [1]

Неужели ни кто не поможет.....?
Очень нужно......



EAlexander   (2002-03-15 16:52) [2]

IMHO, Access не safe thread, поэтому AV :)



Набережных С.   (2002-03-15 17:27) [3]

А что можно сказать, не видя кода?
Загляни для начала сюда, может наведет на мысли:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=9343
Если останутся вопросы - спрашивай конкретней.



digitman   (2002-03-15 18:53) [4]

Абстрагируйся на время от своих DataModule и иже с ними.
Вникни в и запомни :

Закон №1: каждый отдельный поток должен использовать отдельный экземпляр DAO.DBEngine

Закон №2: каждый поток, создавший свой экземпляр DAO.DBEngine, должен обращаться к методам/свойствам только своего экземпляра DAO.DBEngine, и ни в коем случае - к чужим, в противном случае - "смерть от AV")

Данные "законы" верны не только для DAO.DBEngine, но и для любых серверных объектов, имеющих ThreadingModel = Apartment.



Набережных С.   (2002-03-15 19:49) [5]


> digitman © (15.03.02 18:53)

У JET 4.0 модель Both.



ghost_by   (2002-03-15 20:41) [6]

Access не safe thread - неужели все включая XP?

И что мне вообще делать - выходит, что создавать все добро динамически.... Я правильно ответил на свой вопрос?



Набережных С.   (2002-03-15 21:05) [7]

Да при чем тут Access? Ты же через провайдера работаешь. Нужно синхронизовать доступ к компонентам - нельзя использовать один датасет двумя потоками одновременно. И управлять коннектом нужно аккуратно. AV у тебя, скорее всего, возникает, когда два потока одновременно пытаются открыть коннект через один компонент ADOConnection.



ghost_by   (2002-03-16 00:59) [8]

AV у тебя, скорее всего, возникает, когда два потока одновременно пытаются открыть коннект через один компонент ADOConnection - в программе на 100% одновременно не используется ни какой датасет, и ни чего не делают одновременно. и все таки - AV



Набережных С.   (2002-03-16 09:45) [9]

Ну тогда ошибка в 27-й строке. И в 34-й.



ghost_by   (2002-03-17 12:36) [10]

У JET 4.0 модель Both. - все заработало.....

Такой вопрос: если на каком-то компе имеется только JET 3.5, как поставить еще и 4.0



Набережных С.   (2002-03-17 15:36) [11]

То есть, чтобы присутствовали обе версии? Не знаю, возможно ли это. А зачем?



ghost_by   (2002-03-17 21:04) [12]

А зачем? - Очениь просто. Есть у людей Jet 3.5. Моей программе нужно Jet 4.0. Приношу этим людям свой программу и ничего не фунциклирует. Возникает вопрос - как поставить Jet 4.0?

Извените меня за мою назойливость - ну очень нужно.



Набережных С.   (2002-03-17 23:12) [13]

Поставить - другое дело. Берешь нормальный инсталлятор, включаешь соответствующие опции - все. Мне, например, нравится Wise Installer. А вручную никогда не делал, извини.



ghost_by   (2002-03-18 07:27) [14]

Спасибо - вроде как фунциклирует....




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.054 c
1-22657           Serd_hhc              2002-03-26 14:09  2002.04.08  
Как сменить текст моей консольной проги.


3-22567           D'Aron                2002-03-15 15:22  2002.04.08  
ADO и MSSQL2000


1-22629           Дмитрий               2002-03-27 19:00  2002.04.08  
COM&Outlook Express


3-22557           andyway               2002-03-14 06:12  2002.04.08  
Расчет таблиц по базе


4-22881           AlexanderS            2002-01-22 15:45  2002.04.08  
Как получить selected text