Ich habe in meinem Formular dieses, um Messages zu empfangen + als Status ausgeben zu können:
Delphi-Quellcode:
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:
Delphi-Quellcode:
TTask.Run(procedure()
begin
LoadXML(dlgOpenXML.FileName);
end);
Im LoadXML wird so der Status versandt:
Die Nachricht wird so versandt:
TMessageManager.DefaultManager.SendMessage(nil, TMessage<UnicodeString>.Create(xNode.Text), True);
Das führt aber nach ein paar 100 Nachrichten zu einer Zugriffsverletzung. Übersehe ich da etwas?