Frage zu Threads
-
Hey,
ich habe zurzeit ein Problem mit einem Thread in meiner Anwendung. In meiner Doc-Klasse mepfange ich verschiedene Messages, die mir mein Thread schickt, wenn er neue Daten hat.
Darin wiederum teile ich meiner View-Klasse per Sendmessage mit, dass es neue Daten gibt und dann werden verschiedene Aktionen durchgeführt.Meine Frage ist: wie kann ich am besten meinen Thread per Klick auf einen Stop-Button beenden ?

Per TerminateThread soll das ja nicht geschehen !
Wäre super, wenn mir da jemand ein paar Tipps dazu geben kann...
-
Du übergibst doch vermutlich einen Zeiger auf irgendeine Struktur an deinen Thread. Pack da doch einfach ein bool mit rein, dass du im Eventhandler des Stop-Buttons setzt und im Thread abfragst.
-
Das ging ja schnell.

Ok, werde das so machen.
Und wie kann ich den Thread selber dann beenden, wenn die bool Variable zutrifft ?
-
Der Thread wird einfach durch ein return beendet, wie eine normale Funktion (denn eigentlich ist er das ja).
EDIT: Je nachdem, wie du ihn gestartet hast, musst du noch an ein CloseHandle denken. Das hat aber nix damit zu tun, den Thread zu beenden.
-
Ok, super, ja das CloseHandle sollte ich nicht vergessen.
Ich nehme für Threads immer die API-Aufrufe, da weiß ich wenigstens genau, was ich mache oder angebe.Ich danke dir erstmal, wenn noch was unklar ist, melde ich mich nochmal.

-
R3dNeXX schrieb:
Ich nehme für Threads immer die API-Aufrufe
Meinst du damit jetzt CreateThread? Falls ja: davon wird meist abgeraten, weil du Probleme kriegen kannst, wenn du CRT-Calls in den Thread packst (memleaks), wenn du die CRT statisch linkst usw. (siehe http://blog.m-ri.de/index.php/2007/11/28/createthread-und-die-crt/). Nimm AfxBeginThread oder _beginthreadex. Von _beginthread würde ich auch abraten, zumindest wenn man auf den Thread warten und ihn nicht ins Nirwana schicken will (warum steht in der Doku).
-
So richtig verstehe ich das aber noch nicht.
Und was genau mit CRT-Calls gemeint ist, auch nicht, bzw. welche das z.B. sind.Und wo kann man erkennen, ob die CRT verwendet wird, in den Project-Settings ? Falls man das überhaupt kann...
Ich glaub, du musst mich da mal noch etwas aufklären.
-
Das erste was ein C++ Entwickler lernen solte st die Unterscheidung der Libraries und der APIs die er benutzt

srtcpy, strtok, fopen. Die gesamte MFC verwendet die CRT und Du verwendest offensichtlich die MFC...
Lies meinen Artikel in meinem Blog, den _matze Dir gegeben hat.
-
Ok, danke dir.
Werde mich damit mal noch etwas mehr auseinandersetzen.Martin Richter schrieb:
Das erste was ein C++ Entwickler lernen solte st die Unterscheidung der Libraries und der APIs die er benutzt

Dazu ist dieses Forum u.a. ja da, um solche Dinge zu lernen und Tipps von Erfahrenen zu kriegen.
