AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Formular mit Daten füllen nach bestimmter Aktion im Thread
Thema durchsuchen
Ansicht
Themen-Optionen

Formular mit Daten füllen nach bestimmter Aktion im Thread

Ein Thema von Spanky · begonnen am 16. Okt 2010 · letzter Beitrag vom 16. Okt 2010
Antwort Antwort
Benutzerbild von Spanky
Spanky

Registriert seit: 18. Nov 2007
39 Beiträge
 
Turbo Delphi für Win32
 
#1

Formular mit Daten füllen nach bestimmter Aktion im Thread

  Alt 16. Okt 2010, 22:12
Hallo,

ich habe die Verbindung zu einem IMAP-Server in einen Thread ausgelagert. Jetzt möchte ich die Daten im Formular anzeigen, sobald sie der Server (im Thread) geliefert hat. Wie mache ich das am besten?

Meine erste Idee war, eine Methode in der Thread-Unit zu erstellen, die dann mit Hilfe von Synchronize die entsprechenden Objekte des Formular ändert. Aber eigentlich sollte das doch nicht in der Thread-Unit ausgeführt werden, sondern in der Unit vom Formular stehen. Könnte man das dann auch über ein Event lösen und wie funktioniert das genau?

Vielen Dank für eure Hilfe!

MfG Spanky
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Formular mit Daten füllen nach bestimmter Aktion im Thread

  Alt 16. Okt 2010, 22:20
Was quasi fast aufs gleiche rausläuft.

Die Eventmethode wird vom Thread ausgeführt und dafür muss das auch über Synchronize erfolgen.
Die Methode ist halt nur an anderer Stelle (z.B. Im Formular) deklariert.

Als Alternative, wenn man ohne Synchronize und AccessViolation auskommen möchte ist die Verwendung von einer Message die man vom Thread an das Fenster sendet.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 10. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#3

AW: Formular mit Daten füllen nach bestimmter Aktion im Thread

  Alt 16. Okt 2010, 23:33
Mit Event in etwa so (dahingetippt):
Delphi-Quellcode:
type
  TOnTutSichWas = procedure(Sender: TObject; AMyData: TMyData) of object;
  TMyThread = class(TThread)
  private
    FMyData: TMyData; // Klasse, Record, String, was auch immer; wird im Thread mit Daten gefüllt
    FOnTutSichWas: TOnTutSichWas;
    procedure DoSynchronize; // Methode, die im Thread mit Synchronize aufgerufen wird
  public
    property OnTutSichWas: TOnTutSichWas read FOnTutSichWas write FOnTutSichWas;
  end;

{...}

procedure TMyThread.DoSynchronize;
begin
  if Assigned(FOnTutSichWas) then
    FOnTutSichWas(Self, FMyData);
end;
Eine Message versende ich nur, wenn der Thread auf ein Ereignis warten muss und mehr nicht, also dem Hauptthread nur mitteilen muss, "Hey da tut sich was, schau mal nach."

Geändert von Björn Ole (16. Okt 2010 um 23:36 Uhr)
  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 12:42 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