AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Gleichzeitige Befehlsabarbeitung

Offene Frage von "Flo.Hoe"
Ein Thema von Flo.Hoe · begonnen am 26. Jun 2007 · letzter Beitrag vom 27. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2      
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#1

Gleichzeitige Befehlsabarbeitung

  Alt 26. Jun 2007, 18:00
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]
Florian
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Gleichteitige Befehlsabarbeitung

  Alt 26. Jun 2007, 18:04
ein Thread kann nur einwas gleichzeitig machen. Wenn du mehrees gleichzeitig machen willst musst du mehrere Threads verwenden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

Re: Gleichteitige Befehlsabarbeitung

  Alt 26. Jun 2007, 18:04
Du solltest Dich mal mit Threads beschäftigen.

//Edit: Mist, Jens war schneller.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Gleichteitige Befehlsabarbeitung

  Alt 26. Jun 2007, 18:04
ja, indem du die prozedur in einem neuen Thread ausführst

edit: ...war ja klar
Dominik
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Gleichzeitige Befehlsabarbeitung

  Alt 26. Jun 2007, 18:21
Wobei man aber sagen sollte, das immer nur ein Thread zeichnen kann/sollte.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#6

Re: Gleichzeitige Befehlsabarbeitung

  Alt 26. Jun 2007, 18:22
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.
Florian
  Mit Zitat antworten Zitat
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#7

Re: Gleichzeitige Befehlsabarbeitung

  Alt 26. Jun 2007, 19:00
Haben Ereignisse eigentlich eigene Thread's?
Sie agieren doch auch unabhängig von einander.
Florian
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Gleichzeitige Befehlsabarbeitung

  Alt 26. Jun 2007, 19:02
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Gleichzeitige Befehlsabarbeitung

  Alt 26. Jun 2007, 19:03
Die VCL in der jetzigen Form nicht threadsicher. D.H. alles was mit der VCL zu tun hat sollte im Haupthread passieren.
Markus Kinzler
  Mit Zitat antworten Zitat
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#10

Re: Gleichzeitige Befehlsabarbeitung

  Alt 27. Jun 2007, 16:52
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?
Florian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr.
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