Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Alternative zu ProcessMessages in Thread gesucht (https://www.delphipraxis.net/188135-alternative-zu-processmessages-thread-gesucht.html)

devidespe 3. Feb 2016 12:49

Alternative zu ProcessMessages in Thread gesucht
 
Hallo,

ich habe ein Formular, das mehrere Threads generiert, die wiederum rechenintensive Aufgaben durchführen. Nun habe ich das Problem, dass sporadisch bestimmte Threads einfrieren, was ich sehe, weil die Thread-Ausgabe pro Thread mit einem Memo des MainForm gekoppelt ist, das nicht aktualisiert wird.

In diesem Thema

http://www.delphipraxis.net/169097-a...ad-erlaubt.htm

wurde über die Vor- und Nachteile von ProcessMessages im Thread bzw. in dessen Synchronize gesprochen, und auch darüber, dass es eigentlich nicht direkt aufgerufen werden sollte sowie über den Nachteil, dass mit ProcessMessages alle Messages abgearbeitet werden - obwohl ich alle anderen Events, z.B. vom Mainform, vorübergehend deaktiviere.

Insofern hier die Frage nach einer Alternative zu ProcessMessages oder einem anderen Ansatz, der mir helfen könnte...

Vielen Dank.

Luckie 3. Feb 2016 12:56

AW: Alternative zu ProcessMessages in Thread gesucht
 
Zeig mal deinen Thread Code. Irgendwas muss ihn ja blockieren.

Zitat:

die Thread-Ausgabe pro Thread mit einem Memo des MainForm gekoppelt ist
Das macht mich misstrauisch.

Christian Seehase 3. Feb 2016 13:02

AW: Alternative zu ProcessMessages in Thread gesucht
 
Moin Devid,

bei der Aktualisierung der Memos mit Hilfe von Synchronize sollte dass nicht passieren.

Mikkey 20. Feb 2016 09:57

AW: Alternative zu ProcessMessages in Thread gesucht
 
Ich weiß nicht, ob Du die Frage noch auf dem Radar hast.

Wenn das Programm ausschließlich in Windows laufen soll, empfiehlt es sich, das Vorliegen von Zwischenergebnissen/Fortschrittsinformation per "PostMessage" mitzuteilen. Idealerweise verpasst Du dazu der Form-Klasse in Interface, dessen Funktion Du aus dem Thread heraus aufrufst. Die Form-Klasse kümmert sich um die Thread-Entkoppplung (hier eben mit PostMessage).

Weitere Möglichkeiten dafür bieten Mutexe, Queues, das bereits angesprochene Synchronize...

Ein Bedienelement aus einem Arbeits-Thread direkt anzusprechen ist aber schlechter Programmierstil.

Jens01 20. Feb 2016 12:46

AW: Alternative zu ProcessMessages in Thread gesucht
 
Backgrundworker
Sowas ähnliches habe ich mal gemacht. Eine Anzeige mit einer Fortschrittanzeige und einem Thread, der im Hintergrund rödelt.
Der OTL Backgroundworker hat einige Funktionen, damit da nichts einfriert.


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