Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Гуру!Не открывается бд в потоке(не в потоке-ок!)


Автор: EuGenius_Krivbass 29.1.2007, 23:45
Создаю программно поток. Открываю в нем базу данных(DAO, MS Access) и в дебаге сообщение:
Код

Unhandled exception at 0x1b760401 in Bellvisual.exe: 0xC0000005: Access violation reading location 0x0000000c.


Не в потоке, а в обычном методе класса все работает нормально.
Вот код:
Обьявление "потоковой функции"
Код

...
public:    
    friend UINT OurThread(LPVOID pParam);
...


Запуск потока
Код

...
            HWND hWnd = GetSafeHwnd();
    AfxBeginThread(OurThread, hWnd, THREAD_PRIORITY_NORMAL);
...


Сама функция потока
Код

UINT OurThread(LPVOID pParam)
{
    CDaoWorkspace *ws = new CDaoWorkspace;
    CDaoDatabase db(ws);
    try
    {
        db.Open("dbase_bell.mdb");//вот здесь и выскакивает
        ...
    }
...
}


В чем дело?

Автор: takedo 30.1.2007, 09:00
Ну так ептыть. Базы DAO, MS Access - однопоточны. Никогда не откроешь. Вообще так во всем DAO по моему.

Добавлено @ 09:02 
ты MSDN глянул? smile 

Автор: EuGenius_Krivbass 30.1.2007, 13:09
не нормально. я проинициализировал ДАО и покатило
Код

AfxDaoInit();

Как можно узнать об окончании потока?
Можно ли убить поток в функции
Код

UINT OurThread(LPVOID pParam)
{ ...
AfxEndThread(0);
}

Автор: takedo 30.1.2007, 15:31

http://forum.vingrad.ru/topic-100331/hl/afxbeginthread/index.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)