AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Werte übergeben aus einem 2. Thread

Ein Thema von DelphiManiac · begonnen am 11. Jan 2007 · letzter Beitrag vom 12. Jan 2007
Antwort Antwort
Seite 2 von 2     12   
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Werte übergeben aus einem 2. Thread

  Alt 11. Jan 2007, 15:17
Letztendlich müsste das so funktionieren:

Delphi-Quellcode:

procedure TmyThread.DoSynchronizeCommandEvent
begin
  { Hier das für die Anwendung bestimmte Event aufrufen }
  fCurrentCommand.Event;
end;

{ Hierhin wird das Event des Commands umgeleitet,
  kurz vor Ausführung des Commands muss dem Thread
  natürlich dessen Event übergeben werden }


procedure TmyThread.CommandEvent(ACommand: TCommand);
begin
  { Nun entweder hierüber das echte Event des
    Commands aufrufen, dies muss dann sychronisiert
    erfolgen... }

  Synchronize(DoSynchronizeCommandEvent);


  { ODER hier das eigene Event des Threads aufrufen,
    über dessen Parameter das aktuelle Command
    übergeben wird }

  self.RunEvent(CurrentCommand);

end;
Natürlich müsstest du bei Anwendung der ersten Methode
(Synchronize) in deinem Command bzw. Job ein zweites Event
haben,
eins für die Benachrichtigung des Threads,
ein zweites Event für die Anwendung.


Gruß

Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#12

Re: Werte übergeben aus einem 2. Thread

  Alt 11. Jan 2007, 18:44
Hi Pfoto,

so ganz folgen kann ich dir noch nicht.
Aber dein Grundgedanke ist doch folgender

Ich sollte den ausgeführten Job (inklusive der Variablen die im Job ja gefüllt worden sind)
in meinen Hauptthread (den der GUI) übergeben.

Dann könnte ich ja prüfen welcher Job das war und anhand dessen ihn Casten, oder?
So könnte ich dann ja auf die Variablen zurückgreifen (jeder Job hat ja andere Variablen

meinst du ich könnte das dann folgendermaßen machen?
Delphi-Quellcode:
TFrmMain.GetJobFromThread(Sender:TObject; aJob:TBaseJob);
begin
  case aJob of
    TReadPresurreJob: begin
                       Self.editPressure:=IntToStr((aJob as TReadPressureJob).Pressure); // Variable auslesen und in Edit schreiben
                      end;

  ...

  end;
end; // of TFrmMain.GetJobFromThread(Sender:TObject; aJob:TBaseJob);
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Werte übergeben aus einem 2. Thread

  Alt 11. Jan 2007, 19:23
richtig verstanden!

Die von dir aufgeführte Methode entspräche der zweiten Variante,
die ich beschrieben hatte.

Den von mir beschrieben Nachteil, dass du nun nur 1 Event für
alle Commands/Jobs hast, hast du ja durch die case-Abfrage
aufgehoben.

Bei der ersteren Variante (der Thread ruft das eigene Event des
Commands auf), könntest du jedem Command eine ganz individuelle
Auswertung geben, ohne die Case-Struktur.
Was nun bequemer / sinnvoller auf Dauer ist, ist abzuwarten.


Wenn dein Code funktioniert, ist ja alles in Butter


Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#14

Re: Werte übergeben aus einem 2. Thread

  Alt 11. Jan 2007, 19:42


Dann werde ich dass morgen an der Arbeit mal probieren, sage dir bescheid obs geklappt hat.

Also schönen Abend noch,
und danke euch beiden...
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#15

Re: Werte übergeben aus einem 2. Thread

  Alt 12. Jan 2007, 09:06
Hallo,

das mit dem Case hat natürlich nicht geklappt (da er ja zählbare (ordinale) Datentypen erwartet)
Aber ich habe es mit if-Abfragen erstellt und siehe da... alles klappt wunderbar

Also Problem gelöst.
Danke Community!!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:39 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