Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Threading möglich? (https://www.delphipraxis.net/194545-threading-moeglich.html)

derseitzer 6. Dez 2017 12:04

Threading möglich?
 
Hallo Leute,
Ich habe ein Programm und hole mir in einer Funktion alle Informationen von einer Steuerung.
Das sind so viele Daten das ich das gesamte Programm für einige Sekunden lahmlegen würde, wenn ich mir alle Daten auf einmal holen würde.
Momentan hole ich mir nun die Informationen Stückweise, aber mich würde interessieren, ob es nicht möglich ist, alle meine normalen Funktionen Prozeduren und Timer etc. normal
laufen zu lassen und mithilfe eines anderen Kerns die Daten zu empfangen kurz: Multi-Threading. Würde das funktionieren?

Gruß derseitzer

TiGü 6. Dez 2017 12:10

AW: Threading möglich?
 
Die Glaskugel sagt:
Vielleicht! :glaskugel:

derseitzer 6. Dez 2017 12:12

AW: Threading möglich?
 
und ich hab nochmal eine blöde Frage :oops:
Ich habe Delphi 10 Seattle und habe in meiner Tool-Palette kein "TThread", bedeutet dass, das ich da schon wieder irgendeine Erweiterung brauche? :cry:

Uwe Raabe 6. Dez 2017 12:14

AW: Threading möglich?
 
TThread ist nicht von TComponent abgeleitet und kann daher in der Tool-Palette nicht auftauchen.

LTE5 6. Dez 2017 12:18

AW: Threading möglich?
 
Datei > Neu > Weitere > Delphi-Dateien > Thread-Objekt

derseitzer 6. Dez 2017 12:19

AW: Threading möglich?
 
Oh Dankeschön! Dann werde ich mich nun einarbeiten. Dnakeschön :-D

Mavarik 6. Dez 2017 12:52

AW: Threading möglich?
 
oder

Delphi-Quellcode:
TTask.Run(Procedure
begin
  Hole_Daten;
  TThread.Queue(NIL,Procedure
  begin
    Label1.Text := 'Daten da';
  end);
end);
Mavarik

derseitzer 6. Dez 2017 15:30

AW: Threading möglich?
 
Nun habe ich mich ein klein wenig eingearbeitet und habe ein paar Fragen

Meine Form:

Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
  MyThread.Create(False);
end;
Mein TThread:

Code:
procedure MyThread.Execute;
begin
FreeOnTerminate := TRUE;
showmessage('hi');
sleep(5000);
Also ich wollte hier mal testen ob meine Form freazed wenn ich den sleep befehl im Thread nutze und das passiert nicht, so wie erhofft :-D
1. Frage: Stimmt das so, dass ich den Befehl MyThread.Create(False) zum starten meines MyThread.Executes benutze?
2. Frage: angenommen ich hole mir in "MyThread.Execute" nun Daten z.B. A:= Data1, B:=Data2 usw., dann würde meine Form nicht einfrieren (gehe ich von aus,da sie beim sleep Befehl auch nicht einfriert). Inwieweit beeinflusst mein Thread denn nun das ausgeführte Programm meiner Form (ich denke bzw. hoffe, die Antowrt ist garnicht mehr)?
3. Wird nun gleichzeitig die prozedur mythread.execute und z.b. eine prozedur meiner Form1 ausgeführt?
4.angenommen das Daten holen mithilfe des Threads dauert 10sekunden aufgrund der Massen an Daten, woher weiß ich wo ich gerade bin und was ich schon mit meiner Form verarbeiten kann?

Vielen Dank schon im voraus an alle die Ihre Zeit für mich opfern :oops:
Vielen Dank und freundliche Grüße,
derseitzer

Mavarik 6. Dez 2017 15:36

AW: Threading möglich?
 
Meine Antwort gelesen?

TiGü 6. Dez 2017 15:38

AW: Threading möglich?
 
Na, wie werden Objekte in Delphi richtig erstellt? Bitte nochmal überlegen!

Und schaue dir bitte Seite für Seite dieses kleine Tutorial an:
https://www.delphi-treff.de/tutorial...ascal/threads/


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 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