AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Der etwas andere Thread.
Thema durchsuchen
Ansicht
Themen-Optionen

Der etwas andere Thread.

Ein Thema von himitsu · begonnen am 11. Dez 2011 · letzter Beitrag vom 12. Dez 2011
Antwort Antwort
Benutzerbild von himitsu
himitsu
Registriert seit: 11. Okt 2003
Joar, was soll ich dazu sagen?


Es handelt sich um eine Thread-Klasse, welche allerdings auf die Form gepappt werden kann.

Den Vorfahren dieser Klasse nutze ich eigentlich schon eine Weile und nun wurde alles nochmals komplett neu ausfgesetzt.
Auch in Delphi in XE hatte Emba mir (und Anderen) schon die Grundidee geklaut und mit
Delphi-Referenz durchsuchenTThread.CreateAnonymousThread eine Procedur bereitgestellt, womit man einen TThread starten kann, ohne dafür extra eine eigene TThread-Klasse implementieren zu müssen.


So, ich ging nun noch einen Schritt weiter, denn die Variante mit der Prozedur hat einen "kleinen" Nachteil, denn man kann einige Features nicht nutzen.
> So ist es z.B. nicht möglich an die Exceptionbehandlung ranzukommen, so daß Exceptions schnell mal einfach so verschwinden, wenn man es nicht selber verabfängt.
Leider wucks dadurch meine eigene Funktion mit unübersichtlichen Parametern.
Auch bietet die Embas Variante des AnonymousThread keine wirklich vorgesehehne threadsicherr Möglichkeit diesen Thread dann wieder abzubrechen.


Jetzt pappt man also diese Klasse auf seine Form und, wie bei einem TTimer, wird dann die Execute-Methode implementiert.

Alternativ kann man das Teil auch komplett ohne Executemethode nutzen (kann beide Modi aber auch mischen ... siehe Demo) und über eine integrierte Queue lassen sich externe Befehle in diesem bereitgestellten Thread synchronisiert parallelisieren ... ein kleiner Worker-Thread also.

...

k.A. was ich noch sagen könnte.
Und Fotos Screenshots gibt's auch keine.




[add]
Ach ja, die SE-Version ist für ältere Delphi gedacht (falls da was nicht geht, einfach melden)
und das andere Package ist für ab D2010.
Angehängte Dateien
Dateityp: 7z GUIThread.7z (9,2 KB, 81x aufgerufen)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (12. Dez 2011 um 09:41 Uhr)
 
Delphi-Laie

 
Delphi 10.1 Berlin Starter
 
#2
  Alt 12. Dez 2011, 00:09
himitsu, mei Gutster, das ist also sozusagen eine "Pseudo-VCL"-Thread-Klasse, so wie Delphis Timer?

Mein Kompliment! Muß ich gleich mal ausprobieren.
  Mit Zitat antworten Zitat
v2afrank

 
Delphi XE2 Professional
 
#3
  Alt 12. Dez 2011, 08:02
Was ich gesehen habe gefällt mir. Ich werde damit auch intensiver rumspielen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#4
  Alt 12. Dez 2011, 09:01
das ist also sozusagen eine "Pseudo-VCL"-Thread-Klasse, so wie Delphis Timer?
Könnte man so sagen.
Es ist eine "richtige" VCL-Klasse, welche einen TThread kapselt und verwaltet. ('ne Worker-Queue)

- alles schön über den OI einstellbar
- läßt sich auf eine Form/ein DatenModul pappen und schon sieht man gleich wo man einen Thread verbaut hat

Bei der "abgespeckten" SE-Version muß ich aber noch schauen wie sich das verhällt.
Hab's noch nicht in einem älteren Delphi kompiliert.
Aber vom Grundsystem sollte die auch unter älternen Delphis laufen.


PS: 'nen Thread-Pool kommt och irgendwann.

Was ich gesehen habe gefällt mir. Ich werde damit auch intensiver rumspielen
Das freut micht
Also vorallem wenn es nochmals kräftig durchgetestet wird.
Es war nicht grade "einfach" die Synchronisation mit der VCL hinzubekommen.
Vorallem beim Beenden des Programms hatte ich anfangs Probleme, wenn da der Thread noch aktiv auf die Form zugreifen wollte.


[add]
Grade eben hab ich bemerkt, daß in der Queue noch keine Sync-Funktionen vorhanden sind.
Klar kann man dieses auch manuell machen (seit den anonymen Methoden),
Delphi-Quellcode:
TThread.Synchronize(nil, procedure
  begin
    ...
  end);
aber warum nicht auch dort der einfachere/kürzere Weg?

Geändert von himitsu (12. Dez 2011 um 09:40 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 23:46 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