wie kann ich dafür sorgen, dass eine GUI, die in einer schleife länger arbeitet, trotzdem schließbar bleibt?
Ich habe Adlibenable ausprobiert, jedoch kann ich teilweise dannauf buttons klicken ohne das etwas passiert.....
wie kann ich dafür sorgen, dass eine GUI, die in einer schleife länger arbeitet, trotzdem schließbar bleibt?
Ich habe Adlibenable ausprobiert, jedoch kann ich teilweise dannauf buttons klicken ohne das etwas passiert.....
quelltext?
Bitte poste doch dein Script.. eine Gui ist immer schliegbar, sowohl im GuiEventMode als auch mit GuiGetMsg...
while 1
$Msg = GUIgetMsg()
switch $msg
Case $button1
.... lange berechnung ....
Case $button2
Case $button3
wend
func adlib()
if $msg = $GUI_EVENT_CLOSE then Exit
endfunc
findet nun die lange berechnung statt, friert die GUI ein und ist daher nicht schließbar
klar ist die GUI immer schließbar - wenn ich den Process von extern kille ![]()
Ne daran kann man nix machen.. du könntest höchstens während deiner langen berechnung ab und zu den msg-code abfragen..
Oder poste doch einfach deine Berechnung, vllt kann man da was kürzen..
vllt wäre CoProc ne lösung?
die berechnung in seperaten prozess ausführen und wenn geschloßen wird, den berechnungs prozess gekillt
Probier mal das aus :
while 1
$Msg = GUIgetMsg()
switch $msg
Case $button1
.... lange berechnung ....
Case $button2
Case $button3
wend
func adlib()
$msg1 = GUIGetMsg()
if $msg1 = $GUI_EVENT_CLOSE then Exit
endfunc
Bei deinem Script wird bei AdlibEnable die GuiMsg ja gar nicht ausgelesen . $Msg bekommt nur beim Schleifenanfang einen Wert zugewiesen .
Das funktioniert, allerdings habe ich dann bei frisch gestarteter Gui schon viel systemlast.
adlib alle 20ms : 25% last
adlib alle 100ms: 50%last,schließen-delay von 1 sekunde
adlib alle 200ms: 50%last, schließen-delay von 3 sekunden
Hallo LilProgger208,
ich würde versuchen die lange_Berechnung in Teile zu gliedern, und nur über einen Status die nächste Teilberechnung ansteuern und auf Adlib ganz verzichten
[autoit]while 1
$Msg = GUIgetMsg()
switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $button1
$Status = 1
berechnung(1)
EndSwitch
wend
func berechnung($iStat)
switch $iStat
Case 1
Teilrechnung
Case 2
nochne Teilrechnung
EndSwitch
EndFunc
mfg (Auto)Bert
würde ich das so machen, hätte ich tonnenweise doppelten Code...
keiner ne andere Idee?