AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Nicht gestarteter TThread wird nicht beendet - Verständnisproblem: Thread und Event
Thema durchsuchen
Ansicht
Themen-Optionen

Nicht gestarteter TThread wird nicht beendet - Verständnisproblem: Thread und Event

Ein Thema von TiGü · begonnen am 5. Mär 2015 · letzter Beitrag vom 12. Mär 2015
 
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.071 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Nicht gestarteter TThread wird nicht beendet - Verständnisproblem: Thread und Ev

  Alt 12. Mär 2015, 10:34
Hallo Blup,

vielen Dank für die Anregung.
Da es sich aber irgendwie falsch anfühlt, dass die HardwareAnsteuerungsFactory sowohl darüber entscheidet, welche Art von Ansteuerung verwendet wird, als auch die Waschmaschinen kennt und erzeugt, habe ich die Register-Methode in eine eigene WaschmaschinenFactory ausgelagert.
Es erscheint mir noch flexibler zu sein.

Noch ein bisschen unzufrieden bin ich mit dem Punkt, den der Günther erwähnt hat.
Ich veranlasse das Erzeugen im AfterConstruction des Waschsalons und bin damit jeder Exception schutzlos ausgeliefert.
Es wäre wohl besser dem Befehl des Erzeugens eine Ebene höher explizit auszuführen.
Hier im Beispiel also in der procedure Main nach dem Erzeugen des Waschsalons.

Was denkt ihr?
Im Anhang der aktuelle Stand.

Delphi-Quellcode:
  IWaschsalon = interface
    ['{240F248A-E379-44B3-ADBA-B08B3DE26567}']
    function GibtWaschmaschineMitDerNummer(WaschmaschinenNummer : Integer) : IWaschmaschine;
    function GetCount: Integer;
    function GetMaxWaschmaschinen : Integer;
    procedure RegisterWaschmaschine(const AWaschmaschine: IWaschmaschine);

    property MaxWaschmaschinen : Integer read GetMaxWaschmaschinen;
    property Count : Integer read GetCount;
  end;

...

  TWaschmaschinenFactory = class abstract
    class procedure RegisterWaschmaschinen(const AWaschsalon: IWaschsalon);
  end;

...

class procedure TWaschmaschinenFactory.RegisterWaschmaschinen(const AWaschsalon: IWaschsalon);
var
  Waschmaschine: IWaschmaschine;
  HardwareAnsteuerung : IHardwareAnsteuerung;
  I : Integer;
begin
  THardwareAnsteuerungFactory.GetHardwareAnsteuerung(HardwareAnsteuerung);

  for I := 0 to AWaschsalon.MaxWaschmaschinen - 1 do
  begin
    Waschmaschine := TWaschmaschine.Create(HardwareAnsteuerung);
    AWaschsalon.RegisterWaschmaschine(Waschmaschine);
  end;
end;

...

procedure TWaschsalon.AfterConstruction;
begin
  inherited;
  FWaschmaschinenListe := TList<IWaschmaschine>.Create;

  FülleWaschmaschinenListe;
end;

...

procedure TWaschsalon.FülleWaschmaschinenListe;
begin
  TWaschmaschinenFactory.RegisterWaschmaschinen(Self);
end;
Angehängte Dateien
Dateityp: zip Waschsalon.zip (1,7 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
 


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 16:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz