Thread (Wie bekomme ich das hin?)
-
natürlich bekommst du einen fiesen fehler beim ausführen
der code is aber richtigThreadParam *Param = (ThreadParam*) pParam; //threadfunktion
zeigt auf
ThreadParam param; //LesePermanent() funktionwas passiert mit
ThreadParam param; //LesePermanent() funktion
wenn du die funktion fertig durchlaufen hast?für ne richtige antwort bekommst du die lösung

-
Mit durchlaufen der Funktion endet mein Gültigkeitsbereich!
??????
-
richtig
das bedeutet
ThreadParam param; //LesePermanent() funktion
wird gelöscht und
ThreadParam *Param = (ThreadParam*) pParam; //threadfunktion
zeigt auf ein objekt das nicht mehr existiertlösung: mach ThreadParam param; zu ner membervariable von CAbfrage
-
Ich bin ja glücklich, das ich (mit deiner hilfe) gesehen hab das der Gültigkeitsbereich endet, aber jetzt steh ich auf dem Schlauch.
Hab ich das richtig verstanden?
Ich soll im CAbfrage eine membervariable z.B. m_tp vom typ ThreadParam_ anlegen?
Und dann?
-
ne natürlich in der CInteraktion, sorry
-
hab ich gemacht. Wie es aussieht aber mal zur abwechslung Falsch.

muß doch nur die Variable "m_tp" da einsetzen wo vorher param stand, oder.Jedenfals ging es so nicht und ich habe es wieder zurückgeändert, wobei ich jetzt angeblich einen Fehler in der Struktur habe und eine Neudefinition und noch 17 weitere Fehler.
Muß erstmal schauen, woran das liegt.
-
warum ging es so nich?
-
Ich habe die Struktur
typedef struct ThreadParam_ { CInteraktion* pInteraktion; CIOAbfrage* pAbfrage; }ThreadParam;In eine Extra Haeder Datei. "Struktur.h"
Diese habe ich dann jeweils in "Interaktion.cpp" und in der "Abfrage.cpp" eingebunden.
Aus irgendeinen Grund stand das aufeinmal in der "Abfrage.h".#include "Struktur.h" // Hinzugefügt von der KlassenansichtDas gab nen crash.
-----
Was soll ich nun machen? die Membervariable kann ich knicken, weil die Struktur bis dahin unbekannt ist.
Und wenn ich si vorher einbinde gibt es wieder nen crash
-
ich benutz keine structs
also mach mal aus der struct ne klasseclass ThreadParam
{
public:
CInteraktion* pInteraktion;
CIOAbfrage* pAbfrage;
};binde den header in die cpps ein und in den anderen headern schreibst du nur class ThreadParam;
#ifndef
#define#endif
nich vergessendann probiers nochmal
-
(Schade das du keine Strukturen nutzt. Ich fand den Ansatz von Rapha gut.)
Alles gemacht! jetzt ist nurnoch die Klasse nicht definiert.
error C2079: 'm_tp' verwendet undefiniertes class 'ThreadParam'
habe aber "class ThreadParam;" vor die Klasse geschrieben.
Liegt es an der Klasse selbst? Wußte nicht was ich hier schreiben sollte:#ifndef ...
#define ...#endif
Bei mir sieht es so aus. (Struktur.h)
#ifndef ThreadParam #define run class ThreadParam { public: CInteraktion* pInteraktion; CIOAbfrage* pAbfrage; }; #endif
-
#ifndef _H__ThreadParam__H_ //falls dieser header noch nich eingebunden wurde
#define _H__ThreadParam__H_ //binde ihn jetzt einclass ThreadParam
{
public:
CInteraktion* pInteraktion;
CIOAbfrage* pAbfrage;
};#endif //andernfalls überspringe ihn
wenn du das nich machst kann es sein, dass du den mehrfachdeklaration-fehler bekommst
ausserdem musst du den header mit #include in die cpp files einbinden
bzgl. error C2079: 'm_tp' verwendet undefiniertes class 'ThreadParam'
d.h. dass du auf membervariablen oder memberfunktionen zugegriffen hast ohne vorher den header einzubindenclass cBlah;
cBlah einBlah;// OK
einBlah.func();//Fehler
#include "cBlah.h"
einBlah.func();//OK
-
In die beiden cpp's hab ich sie schon eingebunden (Interaktion.cpp , Abfrage.cpp)
Soll es auch in die StdAfx.cpp ?
Außerdem hab ich wie du es sagtest "class ThreadParam;" direkt vor die Klassendefinitionen in (Interaktion.h , Abfrage.h) geschrieben.
Gibt natürlich auch einen Fehler.error C2079: 'm_tp' verwendet undefiniertes class 'ThreadParam'
Ich glaub wenn das gelöst ist sollte es gehen.
-
ne in die StdAfx muss es nich
was passiert wenn du statt "class ThreadParam;" den header einbindest?
-
Ein Fehler in meiner Klasse. ---EDIT + weiter 15
class ThreadParam { public: CInteraktion* pInteraktion; <==== CIOAbfrage* pAbfrage; };error C2143: Syntaxfehler : Fehlendes ';' vor '*'
---EDIT
Bei der anderen Variante hatte ich nur 5 Fehler.
-
schreib mal in deinen ThreadParam header nach dem #define
class CInteraktion;
class CIOAbfrage;jetzt müssts aber langsam mal gehn oder?
-

Es Geht. Glaub ich zumindest. Es wird zwar noch nicht das gemacht was ich will, aber es läuft wie es aussieht.Vielen Dank.
Kann ich noch irgendwie überprüfen ob der Thread läuft?
Außer Debug?
-
mach halt irgendwas in der watch funktion
MessageBox("test");
-
Ich glaub jetzt ist das schlimmste passiert was geht!
Kein Fehler, aber es klappt nicht.Was jetzt?
Mein Thread ändert die Variable (m_iAktuell[]) einfach nicht.
Die MessageBox geht im übrigen garnicht. bekomme dann einen Fehler:'MessageBoxA' : Funktion akzeptiert keine 1 Parameter
Ist aber Korrekte Syntax. Hab es von einer anderen stelle des Programms einfach kopiert.
Mit MessageBeep(0); gibt es keinen Fehler, aber es gibt auch keinen Beep.
-
dann halt
MessageBox(NULL,"test","test",MB_OK);und schaum mal ob dein handle nach der create funktion == NULL is
-
Toll. 1000 Fenster wieder schließen. Das macht spaß

Scheint zu laufen der Thread.
Wie war das jetzt mit dem handle?
Wo soll ich da nachsehen?