neo336 Geschrieben 29. März 2011 Geschrieben 29. März 2011 (bearbeitet) Hallo zusammen Ich habe ein Problem mit einem CWinThread. Ich erzeuge einen Thread der die ganze zeit eine USB schnittstelle ausliest und Daten sended wenn welche zu senden sind. Jedoch habe ich das Problem das wenn ich eine Methode des Threads im Thread selber aufrufe, stürtzt er mit einer "Unhandled exception" ab. // Header File class CCommunicator : public CWinThread { public: [INDENT] CCommunicator(); [/INDENT] protected: [INDENT] virtual ~CCommunicator(); [/INDENT] private: [INDENT] bool m_bRun; bool m_bMessageToSend; // Andere Membervariabeln [/INDENT] public: [INDENT] void Run(); void Send(int nToSend[7]); // Andere Methoden [/INDENT] } // Cpp File #include "CCommunicator.h" void CCommunicator::Run() { [INDENT] // Initialiserung der Startdaten m_Report.Bytes[0] = 255; // etc.. Send(m_Report.Bytes); While(m_bRun) { [INDENT] // Lesen und Schreiben ds USB Ports. [/INDENT] } [/INDENT] } Beim Ausführen der Zeile "Send(m_Report.Bytes);" stürtzt er ab. Ich weis das dies Bedeutet das er die Methode nicht findet / einen NULL pointer auf sie hat. Der Thread wird volgendermassen gestartet: m_pCommunicator = new CCommunicator(); m_pCommunicator->CreateThread(CREATE_SUSPENDED); m_pCommunicator->InitInstance(); m_pCommunicator->ResumeThread(); m_pCommunicator->Run(); Habe ich noch irgendetwas vergessen? Und warum erkennt er die Methode Send nicht? Er gibt beim Kompilieren keinen Fehler und auch keine Warnung. Ich Programmiere mit WindowsXP Visual Studio 6.0 MFC app Vielen dank für eure Hilfe Freundliche grüsse Neo336 Bearbeitet 29. März 2011 von neo336 Zitieren
Klotzkopp Geschrieben 29. März 2011 Geschrieben 29. März 2011 m_pCommunicator->Run(); Damit startest du die Threadfunktion des neuen Threads im Kontext des erzeugenden Threads. Die Funktion läuft damit in zwei Threads gleichzeitig. Lass das weg. Ich weis das dies Bedeutet das er die Methode nicht findet / einen NULL pointer auf sie hat. Schildere bitte das beobachtete Verhalten (Was für eine Exception?), nicht deine Interpretation. Diese Schlussfolgerung ist nämlich falsch. Zitieren
neo336 Geschrieben 29. März 2011 Autor Geschrieben 29. März 2011 Damit startest du die Threadfunktion des neuen Threads im Kontext des erzeugenden Threads. Die Funktion läuft damit in zwei Threads gleichzeitig. Lass das weg. ahh das wusste ich nicht vielen dank! die Exception die auftritt ist: Unhandled exception in MyProject.exe: 0xC0000005: Access Violation Das war auch das Problem es Funktioniert nun Vielen dank und Freundliche grüsse Neo336 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.