AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Methode wird Thread übergeben. Thread startet methode + var
Thema durchsuchen
Ansicht
Themen-Optionen

Methode wird Thread übergeben. Thread startet methode + var

Ein Thema von Jackie1983 · begonnen am 8. Okt 2008 · letzter Beitrag vom 8. Okt 2008
Antwort Antwort
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Methode wird Thread übergeben. Thread startet methode + var

  Alt 8. Okt 2008, 11:22
hi,

aus meiner Hauptanwendung erstelle und starte ich einen Thread. Der Thread startet wieder einen Thread.
Aus der Hauptanwendung übergebe ich Thread1 die Methode. Thread1 übergibt diese Methode Thread2. Thread2 speichert diese in eine Variable.

Beim Aufruf der Methode aus Thread2 kommt es zum Fehler, also muss ich die Methode synchronisieren. Da ich aber Variablen übergeben muss, wie kann ich das machen? Habe da was gefunden
Delphi-Quellcode:
//http://www.dev-center.de/index.php?cat=tutorials&file=multithreading
type
  TBinFertig = procedure(const Content: String) of object;

  TMyOwnThread = class(TThread)
  private
    FBinFertig: TBinFertig;
    procedure SyncBinFertig;
  public
    property BinFertig: TBinFertig read FBinFertig write FBinFertig;
  end;

implementation

procedure TMyOwnThread.SyncBinFertig;
begin
  if Assigned(FBinFertig)
    then FBinFertig(DasIstDerInhaltDerWebseite);
end;

procedure TMyOwnThread.Execute;
begin
  try
    // Download der Seite ...

    // Synchronisieren
    Synchronize(SyncBinFertig);
  except
    on e: exception do begin
      // mache hier irgendetwas mit dem Fehler.
    end;
  end;
end;
Nur brauche ich dann gobale Variablen im Thread und das möchte ich vermeiden. Hat jemand eine andere Idee?
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#2

Re: Methode wird Thread übergeben. Thread startet methode +

  Alt 8. Okt 2008, 11:29
habe es zur zeit mit zwei globalen Variablen gelöst, wenn einer eine bessere Idee hat dann her damit
Delphi-Quellcode:
  TJobThread = class(TThread)
  private
    fTestCmd : TCommandHandling;
    fTestSocket : TCustomWinSocket;
  ...
    Procedure SyncOutputJob;
  ...
  end;


procedure TJobThread.SyncOutputJob;
begin
  if Assigned(fProcCommand) then
    fProcCommand(fTestSocket,fTestCmd);
end;

procedure TDTSJobThread.Execute;
begin
  inherited;
...
        fTestCmd := cmd;
        fTestSocket := TCustomWinSocket(fJobList.Objects[0]);
        Synchronize(SyncOutputJob);
...
end;
  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 13:35 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