"No reply" als antwort beim arbeiten
-
Hallo,
meine app die ich hier am wickel habe, hat ein paar prozeduren welche etwas laenger dauern,
der benutzer bekommt status informationen angezeigt, sowie ueber ein bitte warten dialog noch fortschrittsanzeigen usw, also von der seite her ist alles bestens.nur wenn ich zu einem anderen programm wechsel, und wieder zurueck, oder in den programm selber auch wild umher klick usw, freezt es ein, es arbeitet im hintergrund noch, aber man kann nur noch warten und sieht nicht mehr wie weit es ist
das problem denk ich ist, das das programm voll ausgelastet ist sodass es windows keine antwort mehr sendet, schon "denkt" windows das es inaktiv sei
die loesung dieses problems waere die prozedur welches so lange dauert in nem thread aus zu lagern,
seh ich das richtig, oder lieg ich voellig falsch?
-
Mr Evil schrieb:
das problem denk ich ist, das das programm voll ausgelastet ist sodass es windows keine antwort mehr sendet, schon "denkt" windows das es inaktiv sei
die loesung dieses problems waere die prozedur welches so lange dauert in nem thread aus zu lagern,
seh ich das richtig, oder lieg ich voellig falsch?Ne du denkst schon richtig. Also entweder die Prozedur(en) in extra Thread(s) auslagern, oder die GUI in einen Thread. Obwohl ich zweites persönlich bevorzuge.
-
ok, dazu haette ich auch noch ne frage
es sind 3 stellen wo die auslastung entsprechend hoch ist, einmal in einen dialog welches dann noch ein weiteren please wait dialog bekommt, und beide werden aktualisiert
und die beiden anderen positionen ist das main window {CChildView} und ein jeweils dazu gehoeriges please wait fenster
BTW. das ist MFC, kannte nun verschoben werden
mein buch von jeff prosise spricht von einen arbeitsthread und einen gui thread
arbeitsthread denk cih waere nicht so praktisch, sondern das der please wait immer ein eigener thread ist {ist gekapselt duerfte gehen} dann das hauptfenster eines, und noch der andere dialog einesaber in dem buch finde ich das nicht gut erklaer, und da ich mit threads noch nie was gemacht habe, find ich kein ansatz
einmal, was ist der beste loesungsweg und wie funktioniert der, habe bisher kein gutes tut gefunden
-
so, nu hab ich die "hauptprozedur" in einen AfxBeginThread, und das funktioniert praechtig, die gui wird geupdatet, ich kann das fenster verschieben - hin und her switchen usw - das problem nun ist lediglich das please wait, diesen dialog kann ich nicht erstellen
-
Kann jetzt nicht genau nachvollziehen was du hast und was du möchtest, aber der prinzipielle Aufbau sieht bei mir zumindest immer so aus:
main() -> createguithread() -> waitforguithread() guithread() -> creategui() -> waitforuser() creategui() -> createthreadforextensivefunction()Hoffe so ist es verständlich.
-
in der MFC in dem childview habe ich kein main und mit den paar von dir aufgefuehrten worten kann ich nicht viel anfangen
ich muss eigentlich nur noch das please wait
class CPleaseWait : public CDialog
in nem thread bekommen