hallo,
ich starte den thread in der klasse CWiwoDlg wie folgt:
die methode ExecuteThread ist global und ruft variablen aus den klassen CWiwoDlg, sowie CGraph auf. wenn ich sie statisch deklariere erhalte ich fehlermeldungen. global sind die fehlermeldungen weg, doch sobald ich das programm durchdebugge und in die methode ExecuteThread() hineinspringe kommt eine fehlermeldung unabhängig vom code in der ersten befehlszeile: Zugriffsverletzung! wie kann ich also in einem thread eine funktion aus einer anderen klasse aufrufen?
oder sollte ich gar einen anderen weg gehen?
mfg cappaja
ich starte den thread in der klasse CWiwoDlg wie folgt:
Code:
AfxBeginThread(ExecuteThread, pWiwoDlg, 0, THREAD_PRIORITY_NORMAL, 0, 0);
die methode ExecuteThread ist global und ruft variablen aus den klassen CWiwoDlg, sowie CGraph auf. wenn ich sie statisch deklariere erhalte ich fehlermeldungen. global sind die fehlermeldungen weg, doch sobald ich das programm durchdebugge und in die methode ExecuteThread() hineinspringe kommt eine fehlermeldung unabhängig vom code in der ersten befehlszeile: Zugriffsverletzung! wie kann ich also in einem thread eine funktion aus einer anderen klasse aufrufen?
oder sollte ich gar einen anderen weg gehen?
Code:
UINT ExecuteThread(LPVOID pParam)
{
// Zeichnet die Daten in das Display
while(((CWiwoDlg*)AfxGetMainWnd())->m_bThreadFlag)
{
if(((CWiwoDlg*)AfxGetMainWnd())->DSync)
{
((CWiwoDlg*)AfxGetMainWnd())->DSync = false;
if(((CWiwoDlg*)AfxGetMainWnd())->pDP.x1 != 0)
{
((CWiwoDlg*)AfxGetMainWnd())->m_pGraph->DataTransfer();
Sleep(0); // Setzt Thread auf ready!
}
}
}
return 0;
}
mfg cappaja