Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (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 von neo336
Geschrieben
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.

Geschrieben

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...