AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte ThreadHelper - Prozeduren als Thread laufen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

ThreadHelper - Prozeduren als Thread laufen lassen

Ein Thema von himitsu · begonnen am 17. Jun 2010 · letzter Beitrag vom 18. Jun 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu
Registriert seit: 11. Okt 2003
Vornweg: Hierfür sind die Generics notwendig.

Also, nix Weltbewegendes .. hiermit kann man halt einfach nur verschiedene Prozeduren in eigenen Threads laufen lassen.
Diese Prozeduren können, unter Anderem Dank der Generics, auch mit eigenen Parameterdefinitionen versehen sein.
Bis zu 3 Parameter sind möglich.
Delphi-Quellcode:
Program ThreadHelperP;

Uses Windows, ThreadHelper;

Procedure Proc(Helper: TThreadHelperClass; Const i: Integer);
  Begin
    Beep(1000, 500);
    Sleep(i);
    Beep(1000, 500);
  End;

Procedure Proc2(Helper: TThreadHelperClass);
  Begin
    While Helper.Running do Begin
      Beep(5000, 200);
      Sleep(1000);
    End;
  End;

Begin
  RunAsThread<Integer>(Proc, 3000);

  TThreadHelper.RunAsThread(Proc2);
  Sleep(10000);
  TThreadHelper.StopAllGlobalThreads;

  // warten bis alle Threads beendet wurden
  While TThreadHelper.ActiveGlobalThreads > 0 do Sleep(10);
End.
Leider gibt es keine Generics für Prozeduren , drum mußte ich alles in 'ner Klasse (TThreadHelper) kapseln.
Geplant waren eigentlich nur die RunAsThread-Prozeduren, aber am Ende hatte es so wohl doch einige Vorteile.

Innerhalb der Threads kann man, ebenso wie bei den Thread-Prozeduren,
auch entsprechende Synchronize-Prozeduren aufrufen.



Es ist also nicht nötig sich erst eine eigene TThread-Klasse abzuleiten
oder sich mit der WinAPI auseinander zu setzen,
sondern kann seine Prozedur einfach und direkt starten
und das sogar mit Parametern, was doch sonst immer ein bissl schwieriger ist.

[edit]
In der 7zip liegt nun das Testprogramm, die Generics-Version und eine neue abgespreckte Version ohne Generics.
Angehängte Dateien
Dateityp: pas ThreadHelper.pas (22,3 KB, 36x aufgerufen)
Dateityp: 7z ThreadHelper.7z (3,7 KB, 33x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (18. Jun 2010 um 12:49 Uhr)
 
Benutzerbild von Stevie
Stevie

 
Delphi 10.1 Berlin Enterprise
 
#11
  Alt 18. Jun 2010, 11:33
Mir ist noch nicht ganz klar, warum du, wenn du schon Delphi 2010 nutzt, keine anonymen Methoden benutzt. Das würde das ganze viel schlanker machen.
Stefan
  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 02:20 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