![]() |
[C#] WorkQueue
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Leute,
ich habe für ein Projekt eine Workqueue gebraucht, deswegen hab ich mich schnell hingesetzt und eine geschrieben. Dieser Klasse kann man Jobs zu einer Liste hinzufügen, und diese werden dann von einem Hintergrundthread abgearbeitet. Man kann auch mehrere Jobs gleichzeitig abarbeiten lassen. Das ganze Ding ist ein bisschen dokumentiert, die Lizenz ist die MPL-Lizenz (d.h. ihr könnt den Code verwenden wo ihr wollt, egal ob kommerziell oder nicht. Das einzige was ich will, ist, dass ihr, wenn ihr an dem Ding was ändert, die Änderungen allen zugänglich macht.) Ein Job-Objekt muss das Interface IJob implementieren und ein Referenztyp sein. Als Basisklasse kann man AbstractJob hernehmen, dieses implementiert die wichtigstem Member von IJob. Viel Spaß damit. Für Feedback, Kritik & Anregungen bin ich natürlich immer offen ;) // Edit: Noch ne kleine Demo hinzugefügt. phXql |
Re: [C#] WorkQueue
Ist dieses Teil ein ersatz für das Threadpool von .net selber?
Habe beim Threadpool das problem, das es nur 25 gleichzeitige Threads zulässt, und die SetMaxThread mit bds2006 noch nicht gibt. Gibt es bei deiner implementierung eine limitierung der gleichzeitigen Threads bzw. was ist schlechter/besser als der standard Threadpool? |
Re: [C#] WorkQueue
Das Prblem was ich hier sehen ist, dass Threading damit ähnlich umständlich ist wie mit dem TThread in der VCL.
Man kann nicht einfach eine anonyme Methode übergeben, man muss tatsächlich sein eigene Klasse schreiben um etwas auszuführen. Außerdem kannst du immer nur Jobs vom gleichen Typ in einem Queue haben. Besser wäre es wenn du alle deine Jobs in einem Queue verwalten könntest um so an einer Stelle den Workload deiner App verwalten zu können. @Hans, den Threadpool aus 1.1 würde ich nichtmal mit Stahlhandschuhen anfassen. Schaue mal bei CodeProject, da gab es irgendwo einen brauchbaren ThreadPool. Das Viech was MS da für 1.1 verbrochen hat kostet zuviel Zeit & Ressourcen. |
Re: [C#] WorkQueue
Ich hab nur bis 10 Threads getestet, kannst ja mal ausprobieren. Aber im Prinzip müsste das unendlich viele Threads erstellen können, da geht dir nur der Speicher aus oder dein OS schiebt ein Riegel vor.
Ich kenn vom .NET Threadpool nur den Backgroundworker, und der hat das Problem, dass er nur einen Job gleichzeitig bearbeitet. @Elvis: Ja, das ist absichtlich so gemacht worden, ich bin nich sonderlicher Fan von anonymen Methoden. Aber was sollte mich daran hindern, unterschiedliche Jobtypen zu verwenden? Dann benutze ich halt eine WorkQueue<IJob> und schon kann ich da jeden Job reinstopfen... Oder macht mir wieder was lustiges von dem Generika-Zeugs ein Strich durch die Rechnung? // Edit: Hm, wenn man das ganze statt mit Job-Objekten mit Delegates machen würde, dann könnte man auch anonyme Methoden verwenden... |
Re: [C#] WorkQueue
Vielleicht kann man
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 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-2025 by Thomas Breitkreuz