Programmabbruch... Nur warum????



  • Hi Leute,

    ich versuche in meinem Programm einen neuen (Arbeits)-Thread zu starten. Es kompiliert alles wunderbar allerdings kommt es zu einem Programmabsturz wenn ich dir Methode start(...) aufrufe um den Thread zu starten. Das komische bei der Sache ist das er bei einer Membervariablen meckert (m_bStopThread) und zwar mit dem Kommentar:
    m_bStopThread CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden bool

    Irgendwie komisch... Kann mir jemand helfen? Hier der Code (teilweise aus Frank Budszuhn Buch übernommen)

    #include "StdAfx.h"
    #include ".\eprecthread.h"
    
    struct RecCall
    {
    	CEPRecThread *pRecThread;
    	HWND hWnd;
    	int sleepFor;
    };
    
    CEPRecThread::CEPRecThread(void)
    {		
    	m_bStopThread = false;
    }
    
    CEPRecThread::~CEPRecThread(void)
    {
    }
    
    UINT CEPRecThread::run(LPVOID pParam)
    {
    	RecCall * call = (RecCall *)pParam;
    	ASSERT(AfxIsValidAddress (call->pRecThread, sizeof(RecCall)));
    	return call->pRecThread->run(call->hWnd, call->sleepFor);
    }
    
    void CEPRecThread::start(HWND hWnd, int sleepFor)
    {	
    	static RecCall call;
    
    	call.hWnd = hWnd;
    	call.pRecThread = this;
    	call.sleepFor = sleepFor;	
    	m_bStopThread = false;
    
    	m_pThread = AfxBeginThread(	run, 
    								&call, 
    								THREAD_PRIORITY_BELOW_NORMAL);
    	m_pThread->m_bAutoDelete = false;
    }
    
    UINT CEPRecThread::run(HWND hWnd, int sleepFor)
    {
    	while(TRUE)
    	{
    		//AfxMessageBox("Thread rennt ...");
    		Sleep(sleepFor*1000);
    	}
    	return 0;
    }
    


  • Ok Leute ich bin echt ein NOOB, oh man...
    Vielleicht sollte man die Klasse erstmal instanziieren bevor man sie benutzt ...

    Ich bin echt ne Pappnase 🤡


Anmelden zum Antworten