Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Gleichzeitige Befehlsabarbeitung (https://www.delphipraxis.net/94765-gleichzeitige-befehlsabarbeitung.html)

Flo.Hoe 26. Jun 2007 17:00


Gleichzeitige Befehlsabarbeitung
 
Hi,

Ich habe folgendes Problem.
In der Prozedur Button1Click soll Aktualisieren aufgerufen werden.
Ohne Verzögerung sollen dann die weiteren Befehle ausgeführt werden.
Delphi-Quellcode:


procedure TForm2.Button1Click(Sender: TObject);
begin
 Aktualisieren;
 Form1.show
 close;
end;



procedure TForm2.Aktualisieren;
begin
 while not Pause do begin //Pause bleibt lange Zeit false
   //Zeichnen;
   //30 Frames warten
 end;
end;



... aber Der Computer bleibt bei Aktualisieren hängen und bearbeitet nicht die nächsten Schritte.


Kann man dieses sture Vorgehen deaktivieren und bewirken dass er sich um mehrere Prozeduren gleichzeitig kümmert?


[edit=Matze]Für die Suchfunktion tragischen Tippfehler im Titel korrigiert. *g* MfG, Matze[/edit]

SirThornberry 26. Jun 2007 17:04

Re: Gleichteitige Befehlsabarbeitung
 
ein Thread kann nur einwas gleichzeitig machen. Wenn du mehrees gleichzeitig machen willst musst du mehrere Threads verwenden.

DeddyH 26. Jun 2007 17:04

Re: Gleichteitige Befehlsabarbeitung
 
Du solltest Dich mal mit Threads beschäftigen.

//Edit: Mist, Jens war schneller.

dominikkv 26. Jun 2007 17:04

Re: Gleichteitige Befehlsabarbeitung
 
ja, indem du die prozedur in einem neuen Thread ausführst

edit: ...war ja klar

Klaus01 26. Jun 2007 17:21

Re: Gleichzeitige Befehlsabarbeitung
 
Wobei man aber sagen sollte, das immer nur ein Thread zeichnen kann/sollte.

Grüße
Klaus

Flo.Hoe 26. Jun 2007 17:22

Re: Gleichzeitige Befehlsabarbeitung
 
Dreifachen Dank für die Antwort.
Ich hab mir diese Thread's mal angeguckt und ich glaube das ist noch etwas zu schwierig für mich.
Vielleicht kann ich das Problem irgendwie anders lösen... mal schauen.

Flo.Hoe 26. Jun 2007 18:00

Re: Gleichzeitige Befehlsabarbeitung
 
Haben Ereignisse eigentlich eigene Thread's?
Sie agieren doch auch unabhängig von einander.

Apollonius 26. Jun 2007 18:02

Re: Gleichzeitige Befehlsabarbeitung
 
Nein, das tun sie nicht. Wenn du in einem onClick-Ereignis das Programm lahmlegst (z.B. Endlosschleife), dann reagiert nichts mehr. Das Ereignis wird im Hauptthread ausgeführt.

mkinzler 26. Jun 2007 18:03

Re: Gleichzeitige Befehlsabarbeitung
 
Die VCL in der jetzigen Form nicht threadsicher. D.H. alles was mit der VCL zu tun hat sollte im Haupthread passieren.

Flo.Hoe 27. Jun 2007 15:52

Re: Gleichzeitige Befehlsabarbeitung
 
Ich bin gerade dabei ein Spiel zu programmieren.
Gibt es denn wirklich keine Alternative, auf der Form etwas in einem bestimmten Zeitintervall zeichnen zu lassen?
Den Timer kann ich in meinem Fall nicht nehmen, weil in der 'gleichzeitig'' ablaufenden Nebenrechnung folgende Funktion zum warten nutze
Delphi-Quellcode:
procedure TZeit.delay(msec:longint);
var
  start,stop:longint;
begin
  start := gettickcount;
  repeat
  stop := gettickcount;
  application.processmessages;
  until (stop - start ) >= msec;
end;
Kann mir jemand erklären, warum das nicht funktioniert?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:34 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz