Gausi - So 05.08.07 10:56
Titel: IdTCPClient, AntiFreeze und trotzdem geordnete Kommunikation
Hab da mal wieder ein kleines neues Problemchen. Mein TCP-Client fragt regelmäßig beim Server diverse Sachen nach. während dieser Zeit ist dann die Anwendung blockiert. Merkt man z.B., wenn man die Form verschiebt - die bleibt dann kurz hängen. Jetzt gibts ja bei den Indys diese AntiFreeze-Komponente, die das verhindert. Klappt auch - nur leider zu gut. Denn wenn ich während einer solchen automatischen Abfrage (per Timer) eine weitere per Buttonklick starte, oder zu wild auf den Buttons rumklicke, dann quatschen die einzelnen Anfragen durcheinander, was natürlich nicht gut ist. Wie kann man das beheben?
Ständig einen Flag umsetzen in der Art
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| var busy: Boolean;
procedure TForm1.Timer1Timer(Sender: TObject); begin if busy then exit; busy := True; busy := False; end;
procedure TForm1.Button1Click(Sender: TObject); var t: Integer; begin t := 0; if busy then repeat delay(100); inc(t); until (not busy) or (t > 20);
if not busy then begin busy := True; busy := False; end; end; |
Oder gibt es da eine andere einfachere Möglichkeit?