Гуру! Не открывается бд в потоке (не в потоке открывается)

  • Автор темы EuGenius
  • Дата начала
E

EuGenius

#1
Создаю программно поток. Открываю в нем базу данных(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");//вот здесь и выскакивает
...
В чем дело?
 
B

Barmutik

#2
А инициализацию COM подсистемы Вы сделали в потоке? Её нужно делать для каждого потока отдельно...
 
E

EuGenius

#4
Как можно узнать об окончании потока.
Можно ли убить поток в функции
UINT OurThread(LPVOID pParam)
{ ...
AfxEndThread(0);
}