• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

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

EuGenius

Создаю программно поток. Открываю в нем базу данных(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

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

EuGenius

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!