DAO & MultiThread

9 отговора 1 прегледа
#1

DAO & MultiThread

Някой може ли да каже как се пуска query в отделна нишка? CDaoQueryDef *pQuery = new CDaoQueryDef(m_pMainDB); pQuery->Create(NULL, some_sql); <<<< при мен гръми ето тук ако е извън нишката, работи нормално
Отговор
в отговор на МиГ-31 #2

Не го прави...(no comment)

no comment...
Отговор
в отговор на МиГ-31 #4

?

from MSDN: DAO: Database Application Design Options ... DAO itself is not multithreaded, so you can’t use the MFC DAO classes in multiple threads. Confine your DAO code to a single thread of execution.
Отговор
в отговор на _noname #5

!

DAO 3.5 can be used in several threads of a multi-tasking application to accomplish many tasks simultaneously. For example, a long running query may be performed by one thread, while the contents of a large recordset may be displayed by another thread. This is possible because DAO 3.5 is an inproc (DLL-based) server which supports the OLE Apartment-threading Model. The Apartment-threading Model defines one way interface calls are made to an OLE object and how interface pointers are passed between threads.
Отговор
в отговор на МиГ-31 #7

!

погледни и в Knowledge base article Q169395 - PRB: Thread Safety for DAO/Jet 3.5
Отговор
в отговор на МиГ-31 #8

Абе то, честно казано...

... Аз изходих от едни коментарии в и-нет, където нянкакви спецове, клатеха пръст по въпроса за DAO & MultiThread. Запитах един мой колега, който знае много повече по вьпроса. Той пък беше категоричен - "Не, недейте...". Но като чета резолюцията на МИГ-31 по-горе, започвам да се чудя. Аз поне, досега не сьм правил такова нещо. Не ми е трябвало. Ще проследя вашите мнения най-старателно и ще се поразходя на по-горе указания адрес. Благодаря за ви за коментарите, които прочетох.. Поздрави: Любо.
Отговор
в отговор на _noname #9

!

малки подобрения - става
Отговор
в отговор на МиГ-31 #10

мда

10x 2 _noname за примера. По принцип проблема при мен беше следния: Тъй като използвам DAO 4.0 (по подразбиране MFC работи с 3.51) се налага да направя накои инициализации преди работа с БД: AFX_MODULE_STATE *pModule = AfxGetModuleState(); if (pModule->m_dwVersion < 0x0601) pModule->m_dwVersion = 0x0601; След като махнах тези инициализации и се върнах към 3.51 нямах проблеми с dao & mt. Но кой-знае защо се появи друг странен проблем: гръми m_wndStatusBar.SetPaneText (statusbar на MainFrame)
Отговор