Tutorial von Unix-Tom zum Thema Threads
-
meinst du vielleicht das von Erhard Henkes?
-
Hm, kann sein, dass ich das gemeint habe, aber leider stehts dort auch ncith so drin, wie ich das machen will.
Dann frag ich einfach mal:
Ich will ne Klasse haben, die von CWinThread abgeleitet ist und die man per Klasse.Run(); starten und per Klasse.End(); beenden kann. Da man die eigentliche Threadausführung nicht in die InitInstance machen sollte, wollte ich eigentlich nur wissen: Wo hin dann? Bzw: Klar, in ne Extra-Funktion in meiner Klasse, aber von wo rufe ich diese Funktion auf? In InitInstance? Dann könnte ich den Code ja direkt dort reinschreiben ...
-
Habe dir den Link aus der FAQ gegeben.
In OnInitDialog kannst du den Starten.
-
Danke, den Link zur FAQ hab ich schon gesehen und gelesen. Meiner Meinung nach enthält er aber keine Antwort auf meine Frage ...
Vielleicht war meine Fragestellung auch ungenau. Deswegen versuch ichs einfach nochmal:class CMyThread : public CWinThread { public: Start(); //Start wird aufgerufen, wenn man die Ausführung des Threads starten möchte. //Im alten Beispiel war das Run, die Funktion gibts aber schon für ne andere Funktionalität, deswegen der Namenswechsel. LongOperation(); //Das ist die Funktion, die gethreaded ausgeführt werden soll. End(); //Diese Funktion wird aufgerufen, wenn der Thread beendet werden soll. }So, mein Problem ist jetzt, dass ich nicht weiss, wie/wo ich dem Thread sagen soll, dass er LongOperation gethreaded starten soll. Wie gesagt, in InitInstance soll man das ja nciht einfach aufrufen ...
Start wird wahrscheinlich so aussehen: Ein Aufruf von CreateThread und der Befehl, LongOperation gethreaded zu starten ... nur wie?? Ich hoffe, das war diesmal etwas klarer formuliert ...
-
Verstehe ich nicht ganz.
Run ist eine Funktion in CWinThread die man überschreiben kann.
Wenn du eine Thread so aufrufst wie ich in der FAQ beschrieben habe dann wird die Run() in der Klasse aufgerufen.
In dieser kannst du dann starten was immer du möchtest.
-
Hm, in der MSDN steht aber, dass Run für die MessageQueue bei UI-Threads gedacht ist und selten überschrieben werden sollte ...
Du meinst also, ich soll in meiner Start CreateThread aufrufen, ausserdem Run überschreiben und dort LonOperation aufrufen bzw direkt reinimplementieren?
-
Ich habe es bisher immer so gemacht und noch nie Probleme
-
ok, dann mach ich das einfach acuh so ...
Run wird direkt nach InitInstance aufgerufen, wenn man den Thread nicht als Suspended startet?
-
Ich denke schon aber ich starte ihn immer susp. da ich vorher noch Initialisierungen mache
-
ok