AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Alternative zu ProcessMessages in Thread gesucht
Thema durchsuchen
Ansicht
Themen-Optionen

Alternative zu ProcessMessages in Thread gesucht

Ein Thema von devidespe · begonnen am 3. Feb 2016 · letzter Beitrag vom 20. Feb 2016
Antwort Antwort
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

Alternative zu ProcessMessages in Thread gesucht

  Alt 3. Feb 2016, 12:49
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.
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Alternative zu ProcessMessages in Thread gesucht

  Alt 3. Feb 2016, 12:56
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Alternative zu ProcessMessages in Thread gesucht

  Alt 3. Feb 2016, 13:02
Moin Devid,

bei der Aktualisierung der Memos mit Hilfe von Synchronize sollte dass nicht passieren.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#4

AW: Alternative zu ProcessMessages in Thread gesucht

  Alt 20. Feb 2016, 09:57
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.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
670 Beiträge
 
#5

AW: Alternative zu ProcessMessages in Thread gesucht

  Alt 20. Feb 2016, 12:46
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.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:08 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