Проблема с передачей структуры в поток
От: chekonst  
Дата: 18.04.03 07:33
Оценка:
Всем доборго здравия!
Может кто-нибудь поможет разобраться с проблемой.
Почему-то при открытии таблицы базы данных из
потока вызывается 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++' — ПК
Re: Проблема с передачей структуры в поток
От: Chorkov Россия  
Дата: 18.04.03 08:01
Оценка:
Здравствуйте, 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

... наверное, еще раз пять обсуждалось ...
Re: Проблема с передачей структуры в поток
От: Дмитро  
Дата: 18.04.03 08:02
Оценка:
Здравствуйте, chekonst, Вы писали:

C>Всем доборго здравия!

C>Может кто-нибудь поможет разобраться с проблемой.
C>Почему-то при открытии таблицы базы данных из
C>потока вызывается unhandled exception.
C>Вот примерно что у меня написано

Отлови эксепшин и выведи информацию об ошибке. Насколько я знаю, DAO -- не многопоточная.

--
Дмитрий
--
Дмитрий
Re[2]: Проблема с передачей структуры в поток
От: chekonst  
Дата: 18.04.03 09:11
Оценка:
Здравствуйте, Дмитро, Вы писали:

Д>Отлови эксепшин и выведи информацию об ошибке. Насколько я знаю, DAO -- не многопоточная.


Д>--

Д>Дмитрий

Так дело в том что он и не ловится через
try
{
MyTableDef.Open("MYTABLE");
}
catch (CDaoException *p)
{
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.