Delphi-PRAXiS
Seite 6 von 6   « Erste     456   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Code vom Thread in einen Timer umziehen? (https://www.delphipraxis.net/190675-code-vom-thread-einen-timer-umziehen.html)

stahli 25. Okt 2016 19:24

AW: Code vom Thread in einen Timer umziehen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
So würde ich es machen (XE3)...

Mit Events ist es noch besser strukturiert als mit Übergabe des Formulars.
Nachrichten verschicken ginge natürlich auch, aber das habe ich schon Jahre nicht mehr gemacht. :oops:

Jim Carrey 25. Okt 2016 19:27

AW: Code vom Thread in einen Timer umziehen?
 
Bedrohung blockiert
Objekt: delphipraxis.net/attachments/....
Infektion:
Win32:Evo-gen [Susp]

:stupid:

Sieht aber interessant aus. Wusste ich gar nicht, dass das überhaupt so möglich ist.
Edit: da steht zwar "0x aufgerufen" aber ich habs runtergeladen und angeguckt.

einbeliebigername 25. Okt 2016 20:55

AW: Code vom Thread in einen Timer umziehen?
 
Zitat:

Zitat von Jim Carrey (Beitrag 1352014)
Ich sagte doch das war einfach nur dahin geklatsch.

Manches geht aber auch dahingeklatsch nicht. Und manchmal sind die einfacheren Lösungen die besseren.

Zitat:

Zitat von Jim Carrey (Beitrag 1352014)
Zum Thema Delay und Thread, guck mal hier: Delay von negaH

Da steht was von wegen mit eigener Messagequeue. Du hast aber kein Thread mit Messagequeue. Ich hab noch nie einen Thread mit eigener Messagequeue unter den Fingern gehabt bzw. selbst gebaut. Bin aber, bis mich jemand vom gegenteil überzeugt, der Meinung das so ein Thread seinen eigenen Nachrichtenverarbeitungscode haben sollte.

Edit: Fehlendes [/QUOTE] eingefühgt.

Jim Carrey 25. Okt 2016 20:58

AW: Code vom Thread in einen Timer umziehen?
 
Ist zwar offTopic aber... in Threads dann doch besser ein simples Sleep() verwenden?

stahli 25. Okt 2016 21:17

AW: Code vom Thread in einen Timer umziehen?
 
Ich hatte noch das FreeOnTerminate vergessen, so dass der Thread nach Beendigung nicht freigegeben wurde:

Delphi-Quellcode:
constructor TArbeiterThread.Create(aMinValue, aMaxValue: Integer; aProgressInitEvent: TProgressInitEvent;
  aProgressStepEvent: TProgressStepEvent; aProgressCloseEvent: TProgressCloseEvent);
begin
  fMinValue := aMinValue;
  fMaxValue := aMaxValue;
  fProgressInitEvent := aProgressInitEvent;
  fProgressStepEvent := aProgressStepEvent;
  fProgressCloseEvent := aProgressCloseEvent;

  FreeOnTerminate := True; // <------------

  inherited Create(False);
end;

Ja, ein Sleep(1 oder höher) im Thread gibt anderen Prozessen auch mal die Möglichkeit, etwas auszuführen.
Sleep(0) prinzipiell auch, aber ich hatte dennoch schon den Effekt, dass die CPU mit 100% weiter lief.

Jim Carrey 25. Okt 2016 21:28

AW: Code vom Thread in einen Timer umziehen?
 
Ich habe irgendwann angefangen negaH's Version zu verwenden, weil ich zu oft Fehler gemacht habe.
Mein letzter war eine while-Schleife im OnCreate etwa wie...
Delphi-Quellcode:
while True do Caption := IntToStr(Random(1234));
Das hat mir den Rechner fast zerlegt. Seitdem benutzte ich immer die Version mit ProcessMessages als Sicherung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr.
Seite 6 von 6   « Erste     456   

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