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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...