Thread von aussen beenden funktioniert nicht
-
hmm,
ich hab in einen Beispiel gesehen dass das WaitForSingleObject() nach dem AfxBeginThread() aufgerufen worden ist, kannst du es dort positionieren??m_pEvent = new CEvent(FALSE, TRUE); AfxBeginThread(ThreadFunc, (LPARAM)m_pEvent); // dann hier in der selben Funktion: WaitForSingleObject(...);versuch mal, vielleicht hilfts!
lg
pixel
-
Jetzt habe ich grad was ganz seltsames entdeckt ^^
Ich habe nun das mit dem PostThreadMessage eingeführt. Es funktioniert nicht. Aber nur im normalen Betrieb nicht. Hmmm mal schauen wie ich das erkläre ^^if(nChar == VK_ESCAPE && m_pThread != NULL) { m_pThread->PostThreadMessage(Global::WM_THREADEND, 0, 0); // G_bStopThread = true; }Das steht aktuelle in OnKeyDown. Wenn ich einen Breakpoint auf m_pThread->PostThreadMessage(...) setze, dann kann ich Escape im Programm drücken soviel wie ich will, es wird nie stoppen. Wenn ich den Breakpoint auf der if-Anweisung setze und im Programm Escape drücke, dann wird der Breakpoint aufgerufen. Wenn ich dann F10 drücke für den nächsten Schritt, geht er auch in die Anweisung rein, postet die Message und beendet dann den Thread.
Kann mir dies nun jemand erklären? ^^
[Edit]
@Pixel, worauf soll denn dort gewartet werden? Und wie lange? Auf den Thread oder das Event? Und wieso soll überhaupt im Mainthread gewartet werden. Der hat anderes zu tun, nämlich auf Input des Users zu warten. Z.b. ob der Escape drückt
[/Edit]Grüssli
-
Dravere schrieb:
@connan
Und wenn keine Nachricht wartet? Also wie kann ich meinen Threadcode mit dem abrufen der Nachrichten kombinieren?Du kannst deinen Code z.B. vor dem Ende der Schleife einfügen.
-
connan schrieb:
Dravere schrieb:
@connan
Und wenn keine Nachricht wartet? Also wie kann ich meinen Threadcode mit dem abrufen der Nachrichten kombinieren?Du kannst deinen Code z.B. vor dem Ende der Schleife einfügen.
Danke hab es schon selber rausgefunden, wie man es eigentlich aus meinem letzten Post herauslesen könnte

Aber das Problem besteht wie gesagt immer noch, bzw. inzwischen habe ich das Gefühl es liegt an was anderem, aber kann es wie gesagt nicht definieren. Schaut euch die Beschreibung meines letzten Posts an und sagt mir, was euch dazu einfällt ^^Grüssli
-
erstelle ein neues projekt und kopier deine bestehenden codes da rein. nur ein versuch auf doof, aber vielleicht geht das.
-
net schrieb:
erstelle ein neues projekt und kopier deine bestehenden codes da rein. nur ein versuch auf doof, aber vielleicht geht das.
Ist das ernst gemeint oder muss ich das als Witz auffassen? 0o ...
Wieso sollte das was ändern? Und ihr wollt mir doch nicht verklickern, dass ihr da auch nicht weiter wisst? Ihr seid doch meine Vorbilder, die Allwissenden, während ich nur der Neuling bin, dass könnt ihr mir doch nicht antun
...Grüssli
-
Dravere schrieb:
Ist das ernst gemeint oder muss ich das als Witz auffassen? 0o ...
ist ernst gemeint. sowas hilft, wenn irgendwelche projektdateien kaputt sind.
-
wir könnten dir helfen wenn du uns den sourcecode zum download anbietest.
-
net schrieb:
Dravere schrieb:
Ist das ernst gemeint oder muss ich das als Witz auffassen? 0o ...
ist ernst gemeint. sowas hilft, wenn irgendwelche projektdateien kaputt sind.
Ein kleines bisschen viel Arbeit. Deshalb die Frage, gibt es noch irgendwelche andere Möglichkeiten ausser dem?
Grüssli
-
Dravere schrieb:
[
Ein kleines bisschen viel Arbeit.nö,
- ein neues, leeres projekt erstellen
- alle bestehenden codes .cpp/.h/.rc usw. in den neuen ordner kopieren
- in der ide rechte maustaste auf den projektnamen -> hinzufügen -> vorhandenes element hinzufügen -> alle dateien auswählen
- fertig ist das neue projekt
-
Ok ich hab es gemacht ... Resultat ... es funktioniert immer noch nicht. *seufz und langsam die Hoffnung verliert, dass noch irgendwann zu lösen*
Grüssli
-
dann pack mal das ganze projekt inne .zip datei und schick es an pittbull_nt@yahoo.com
-
net schrieb:
dann pack mal das ganze projekt inne .zip datei und schick es an pittbull_nt@yahoo.com
Dann suche ich zuerst nochmals selber weiter. *schämt sich zu sehr für den unprofessionellen Code*
Ansonsten keine Idee? Gerade auch wegen dem, dass es mit einzelnen Schritten funktioniert, aber wenn man es normal laufen lässt nicht?
Grüssli
-
Vielen vielen vielen Dank für die gesamte Hilfe. Ich habe das Problem gelöst. Es ist sowas von unheimlich dumm. Bin aber erst dem ganzen auf die Schliche gekommen, als ich gemerkt habe, dass meine View kein Fokus hat, wenn der Thread läuft und ich Escape drücke. Das Escape wurde ganz wo anders hingeschickt. Nun weiss ich wieso, warum, wann, wo und all das Zeugs. Anderst gesagt, Problem gelöst. Sorry das ich eure kostbare Zeit verschwendet habe.
Grüssli