Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Daten vom Thread zur Klasse zur Anwendung

  Alt 18. Mär 2010, 08:50
Moin !

Ich versuche mich gerade an etwas Theorie zum Thema Threads, Klassen und Notifikationen. Und dabei bin ich auf ein paar Dinge gestoßen wo ich im Moment nicht weiter komme.

Zu meiner Idee ...
Nehmen wir an wir wollen eine Anwendung erstellen die von mehreren Eingangsquellen Daten aufnehmen kann. Und gehen wir mal weiter davon aus das ein Eingang ein TCP Socket ist und ein Eingang z.B. eine CSV Datei.
Um das ganze möglichst universell zu halten ist meine Idee nun, die Eingänge jeweils in eine Klasse zu packen. Wir erstellen also zwei Klassen die in etwa so aussehen könnten:
Delphi-Quellcode:
type
  TInput = class(TPersistent)
    private
      Daten : string;
      InpThread : TInputThread;
    protected

    public
      constructor Create;
      destructor Destroy; override;
    published

  end;
InpThread ist an dieser Stelle nur ein "Platzhalter" der mittels Thread Daten liefern kann. Hier könnte letztlich alles mögliche stehen. Sei es ein TCP Server, eine serielle Schnittstelle, ein Thread der eine CSV auswertet, ....

Der Thread schaut im Moment mal so aus:
Delphi-Quellcode:
type
  TInputThread = CLASS(TThread)
    private
      Daten : string;
    protected
      procedure execute; override;
    public
      constructor create; virtual;
  end;

procedure TInputThread.execute;
begin
// while not Terminated do;
  Daten := 'test';
end;

constructor TInputThread.create;
begin
  inherited create(true); // CreateSuspended = true
  freeOnTerminate := true;
end;
Nun frage ich mich aber ... Wie kann ich vom Thread die Daten zur Klasse bekommen? Kann man da eine Art Notifikation absetzen?
Und wie kann ich dann aus der Klasse eine Notifikation in Richtung Anwendung schicken um zu signalisieren das neue Daten zur Bearbeitung zur Verfügung stehen?

Hat da jemand eine gute Idee zu?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat