AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign PostMessage mit WndProc oder WMCopyData/Record aus Thread für GUI-Aktualisierung?
Thema durchsuchen
Ansicht
Themen-Optionen

PostMessage mit WndProc oder WMCopyData/Record aus Thread für GUI-Aktualisierung?

Ein Thema von Glados · begonnen am 3. Nov 2017 · letzter Beitrag vom 7. Nov 2017
Antwort Antwort
Glados
(Gast)

n/a Beiträge
 
#1

AW: PostMessage mit WndProc oder WMCopyData/Record aus Thread heraus?

  Alt 3. Nov 2017, 15:46
Von TThreadedQueue höre ich zum ersten mal.

Wie würde denn dann aus diesem Extra-Thread heraus aktualisiert. Auch wieder mit Synchronize?
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
248 Beiträge
 
Delphi 12 Athens
 
#2

AW: PostMessage mit WndProc oder WMCopyData/Record aus Thread heraus?

  Alt 3. Nov 2017, 16:01
Ja mit Synchronize.

Ich habe kein Beispiel und habe damit bis jetzt nur eine Log Funktion umgesetzt aber die Idee fand ich gut.

Wenn ich das richtig verstanden hatte dann funktioniert die TThreadedQueue wie eine Art Spender (z.B. Rollen Spender).
Oben wird nachgefüllt und unten nach und nach leer gemacht.

Ist im Grunde wie ein Puffer der den Job Threads die Warte Zeit abnimmt.
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#3

AW: PostMessage mit WndProc oder WMCopyData/Record aus Thread heraus?

  Alt 3. Nov 2017, 16:02
Nur dann wäre ich ja wieder beim Synchronize, wovon ich eigentlich weg möchte.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.224 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: PostMessage mit WndProc oder WMCopyData/Record aus Thread für GUI-Aktualisierung?

  Alt 3. Nov 2017, 18:44
Ich habe jetzt nicht gesehen ob es schon angesprochen wurde:
WM_COPYDATA muss mit SendMessage verwendet werden und WM_COPYDATA hat bei uns (früher) nicht als Kommunikation im Prozess funktioniert (nur zwischen Prozessen).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#5

AW: PostMessage mit WndProc oder WMCopyData/Record aus Thread für GUI-Aktualisierung?

  Alt 3. Nov 2017, 19:13
Zitat:
WM_COPYDATA muss mit SendMessage verwendet werden und WM_COPYDATA hat bei uns (früher) nicht als Kommunikation im Prozess funktioniert (nur zwischen Prozessen).
Funktioniert bei mir wie gewünscht im selben Prozess.
Ich glaube ich bleibe aber bei WndProc. Ob ich ein ganzes Record schicke muss ich noch gucken. Eventuell schicke ich Strings sogar nur so PostMessage(receiver, command, wParam, Integer(PChar(string)));
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
984 Beiträge
 
Delphi 6 Professional
 
#6

AW: PostMessage mit WndProc oder WMCopyData/Record aus Thread für GUI-Aktualisierung?

  Alt 3. Nov 2017, 19:35
Hmm..

das mit WM_COPYDATA kann im selben Process nur funktionieren, wenn zwischen verschiedenen Threads..

Denn die Message kann im selben Thread nicht abgearbeitet werden, da diese ja noch auf das Return vom SendMessage wartet

Ich habe dies benutzt, um Texte aus Threads heraus an den MainThread zu schicken ohne Verwendung von Synchronize...
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#7

AW: PostMessage mit WndProc oder WMCopyData/Record aus Thread für GUI-Aktualisierung?

  Alt 3. Nov 2017, 19:40
Zitat:
ohne Verwendung von Synchronize...
Genau aus demselben Grund versuche ich diese komischen Umwege ja auch
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.224 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: PostMessage mit WndProc oder WMCopyData/Record aus Thread für GUI-Aktualisierung?

  Alt 3. Nov 2017, 20:50
Hmm..

das mit WM_COPYDATA kann im selben Process nur funktionieren, wenn zwischen verschiedenen Threads..

Denn die Message kann im selben Thread nicht abgearbeitet werden, da diese ja noch auf das Return vom SendMessage wartet
Es war kein Problem das es überhaupt nicht funktioniert hat sondern hin und wieder einfach nicht angekommen ist.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 21:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz