Multithreading und Wrapper-Klasssen
-
Hi,
vielleicht könnt Ihr mir helfen, folgendes zu begreifen.
Ich habe ein Objekt aus einer OCX-Bibliothek, das mittels Wrapper Klasse (class _myObject : public COleDispatchDriver) eingebunden ist. Auch wenn "OCX" das nahe legt ist das Objekt nicht visuell (kein ActiveX).
Ich kann es in einer Funktion wunderbar benutzen, außer ich rufe die Funktion aus einem Thread auf.
Also, soetwas funktioniert:
void TestDlg::DoIt() { _myObject m_obj; m_obj.CreateDispatch("xxxx.xxxx"); m_obj.ObjMethod(xxx); } void TestDlg::OnButton() { DoIt(); }Aber soetwas funktioniert nicht:
static UINT MyThread(LPVOID p); UINT TestDlg::MyThread(LPVOID p) { TestDlg * app=(TestDlg *) p; app->DoIt(); return 0; } void TestDlg::DoIt() { _myObject m_obj; m_obj.CreateDispatch("xxxx.xxxx"); m_obj.ObjMethod(xxx); } void TestDlg::OnButton() { AfxBeginThread(MyThread, this); }Kann mir das jemand erklären (mir fehlt offensichtlich grundlegendes Verständnis) oder sogar eine Lösung anbieten?
Danke im Voraus...