![]() |
AW: TMessageManager/SendMessage
Zitat:
Wer's anders umgesetzt haben will suche meinen QP feature request und stimme für diesen. => synchronisieren wie empfohlen und schon wird's klappen |
AW: TMessageManager/SendMessage
Zitat:
|
AW: TMessageManager/SendMessage
:- ) Jetzt tut das so, wie ich will - danke für alle Hinweise.
Im Formular im FormCreate, um das UI zu aktualisieren:
Code:
MessageManager := TMessageManager.DefaultManager;
SubscriptionId := MessageManager.SubscribeToMessage(TMessage<UnicodeString>, procedure(const Sender: TObject; const M: TMessage) begin lblStatus.Text := (M as TMessage<UnicodeString>).Value; end); Eine Methode, die länger braucht, wird so aufgerufen:
Code:
Im LoadXML wird die Info für das Aktualisieren des UI so versandt:
TTask.Run(procedure()
begin LoadXML(dlgOpenXML.FileName); end);
Code:
TThread.Queue(nil,procedure
begin TMessageManager.DefaultManager.SendMessage(nil, TMessage<UnicodeString>.Create(LTxt) ); end); |
AW: TMessageManager/SendMessage
Zitat:
![]() |
AW: TMessageManager/SendMessage
Zitat:
Ich kann mir auch Szenarien vorstellen, wo eine Message nicht vom Main Thread aus verschickt wird, und der OP bestätigt das ja, sonst hätte es den gesammten Thread nicht gegeben. Ich würde einfach asynchron wie PostMessage unter Windows aber eben plattformübergreifend Nachrichten versenden können wollen. Man kann ja auch eine synchrone Variante beibehalten, so wie es in Windows ja auch PostMessage gibt. |
AW: TMessageManager/SendMessage
Unter FMX funktioniert das ganze Aktualisieren des UI anders als unter VCL. Gleichzeitig ist "UI aktualisieren" etwas sehr zentrales, das jede/r braucht. Daher hat es mich gewundert, das es nichts out-of-the-box gibt. Und dass man selber mit Threads und Queues herumtun muss. Eine Komponente würds ja schon tun, die das kapselt, was man so zu Fuß machen muss.
|
AW: TMessageManager/SendMessage
Zitat:
Es ist oft viel einfacher, eine Lösung für den eigenen, konkreten Anwendungsfall zu implementieren, als eine allumfassende Lösung, die allen nur möglichen Szenarien Rechnung trägt. Selbst wenn da jemand wäre, der das entwerfen könnte, wären nicht ausreichend Leute vorhanden, um das zu pflegen. Vermutlich wäre es dann auch wieder so komplex, daß es kaum einer versteht - mit der Folge, daß doch wieder jeder seinen eigenen Brei kochen würde. Ist der Wunsch danach auch nachvollziehbar, wären die meisten wohl vom Ergebnis ziemlich enttäuscht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 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