Всем доборго здравия!
Может кто-нибудь поможет разобраться с проблемой.
Почему-то при открытии таблицы базы данных из
потока вызывается unhandled exception.
Вот примерно что у меня написано
//Это описание структура, через которую я обмениваюсь
//информацией с процессом
typedef _IMPORTARG
{
CDaoDatabase* pDb;
.......... //Здесь другие переменные
}
//Это класс из которого я вызываю процесс
class CImportProgressDlg : public CDialog
{
public:
IMPORTARG ImportArg;
CDaoDatabase MyDb;
public:
CImportProgressDlg(CWnd *pParentWnd=NULL);
BOOL OnInitDialog();
void OnCancel();
afx_msg LRESULT OnEndThread(WPARAM, LPARAM);
DECLARE_MESSAGE_MAP();
};
//Здесь запускаем поток
BOOL CImportProgressDlg::OnInitDialog()
{
MyDb.Open(tmpstr);
if (!MyDb.IsOpen())
{
ImportArg.ErrString = "Can not open database!";
AfxMessageBox(ImportArg.ErrString);
EndDialog(IDCANCEL);
return FALSE;
};
ImportArg.pDb = (CDaoDatabase*) &this->MyDb;
::AfxBeginThread(ImportThread,&ImportArg);
return TRUE;
}
.............
UINT ImportThread(LPVOID lpVoid)
{
IMPORTARG *InStruct = (IMPORTARG*)lpVoid;
CDaoTableDef MyTableDef(InStruct->pDb);
MyTableDef.Open("MYTABLE"); // <- Вот здесь и возникает unhandled exception
// При этом окно еще не закрыто, и указатель на базу не потерян
}
Может быть я как то неправильно передаю данные в поток?
Заранее благодарен тем, кто мне ответит.
18.04.03 12:09: Перенесено модератором из 'C/C++' — ПК
Здравствуйте, chekonst, Вы писали:
C>Всем доборго здравия!
C>Может кто-нибудь поможет разобраться с проблемой.
C>Почему-то при открытии таблицы базы данных из
C>потока вызывается unhandled exception.
C> ...
Проблемма связана не со структурой, как указано в загловке,
а с использованием DAO:
Смотри:
http://www.rsdn.ru/Forum/Message.aspx?mid=6376Автор:
Дата: 14.09.01
http://www.rsdn.ru/Forum/Message.aspx?mid=63557Автор: Chorkov
Дата: 14.06.02
... наверное, еще раз пять обсуждалось ...