wenn ich ne MessageBox ausgebe dann funzt das. while(!terminationflag){AfxMessageBox("test"); Sleep(100);}
Anscheinend reisst die Buttonmethode die komplette rechenzeit an sich und erlaubt es dem thread nicht weiterzumachen bis die buttonmethode beendet ist. Sowas wie ne Messagebox scheint das zu untebrechen.
falls das flag == 0 ist, wieso sollte er jemals in der zweiten zeile ankommen? (außer wenn ein anderer thread das flag auf !=0 setzt, natürlich) die messagebox wird ausgeführt, genauso wie sleep, sie ist ja innerhalb der endlosschleife -- main($)??<-$<='?'>>2?main($-!!putchar( (("$;99M?GD??(??/x0d??/a:???;a"+'?'/4) ??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
@kronos wenn du auf den butten klickst wird das messflag 1 das ist auch nicht das problem diese Schleife ist eher noch ein relikt und kann später wegfallen, falls das funzen sollte. wenn ich den dialog allerdings aus dem thread beenden muss ist die notwendig
Er kommt ja nichtmal bei dieser schliefe an solange der sich in der buttonmethode befindet.
Problem ist wie gesagt das der den Thread nicht mehr abarbeitet so lange der sich in der buttonmehtode befindet und diese wartet ja gerade drauf das der thread fertig wird
Jetzt alles klar
Gruss Heiko -- ...fleißig wie zwei WeißbroteDieser Post wurde am 06.08.2003 um 20:16 Uhr von Heiko editiert.
ach so, jetzt... ka, hast du messageflag vielleicht zweimal deklariert? -- main($)??<-$<='?'>>2?main($-!!putchar( (("$;99M?GD??(??/x0d??/a:???;a"+'?'/4) ??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
Ich habe das auch schon ausführlich getest und weiss das es daran liegt das der Thread solange nicht weiterarbeitet, bis die blöde Buttonmehtode beendet ist. Was ich such ist ne Lösung wie ich den Thread dazu bringen kann trotzdem weiterzulaufen
da beisst sich dann ja die katze in den schwanz. ich will ja das die Buttonmehtode den Dialog beendet. Dann müsste die Buttonmethode wiederum darauf warten das der zweite Thread seine Arbeit getan hat was dann ja zu dem selben problem kommt.
Kann mir das villeicht zumindest einer erklären warum das so ist?
legst du dein Programm lahm... Wenn man Sleep im Hauptthread auszuführt gabs bei mir auch immer Probleme.
Machs halt so:
Abbrechen geklickt -> weiterer Thread startet und führt das terminationflag zeug aus -> wenn terminationflag da ist -> daraus den Dialog schliessen
bzw lass den 2ten Thread auf weg: Abbrechen gedrückt -> Terminationflag setzen Bei Threaddurchlauf wenn Term-Flag gesetzt Dialog beenden -- class God : public ChuckNorris { };Dieser Post wurde am 07.08.2003 um 13:17 Uhr von FloSoft editiert.
ja aber nach deiner beschreibung muss ich den Dialog doch im Thread beenden (also Enddialog in meinem Thread aufrufen) und dass will ich ja gerade vermeiden oder habe ich dich falsch verstanden? -- ...fleißig wie zwei Weißbrote