Bibliothek für Multithreaded Windows Service Threading [geschlossen]
-
19-09-2019 - |
Frage
Ich bin für eine gute Bibliothek, vorzugsweise in C #, die ich in einem Windows-Dienst verwenden kann, und es behandelt alle die Multithreading-Funktionalität benötigt.
Der Service wird alle x Minuten laufen, überprüfen Sie eine Datenbank für Prozesse aufrufen, und für jeden von ihnen Laichen einen Thread und führen Sie es.
Jeder Thread sollte behandeln Ausnahmen, Protokollierung und so weiter.
Irgendwelche Vorschläge?
Lösung
Dieses Projekt Betrachten http://www.codeplex.com/smartthreadpool
Projektbeschreibung
Smart Thread-Pool ist ein Thread-Pool in C # geschrieben. Es ist viel weiter fortgeschritten als der .NET-Einbau-Thread-Pool. Hier ist eine Liste der Thread-Pool Merkmale:
- Die Anzahl der Threads dynamisch ändert sich entsprechend der Auslastung der Threads im Pool.
- Arbeitselemente können einen Wert zurückgeben.
- kann ein Workitem abgebrochen werden.
- Der Kontext des Anrufer Thread verwendet wird, wenn die Arbeitseinheit ausgeführt wird (begrenzt).
- Verwendung von Mindestanzahl von Win32-Ereignisse behandelt, so dass die Handleanzahl der Anwendung wird nicht explodieren.
- Der Anrufer kann für mehr warten oder alle Workitem abzuschließen.
- Workitem kann ein PostExecute Rückruf haben, die so bald genannt wird, wird das Workitem abgeschlossen.
- Das Statusobjekt, das das Workitem begleitet, kann automatisch entsorgt werden.
- Arbeits Artikel Ausnahmen werden zurück an den Anrufer gesendet.
- Workitems haben Vorrang.
- Workitems Gruppe.
- Der Anrufer kann den Beginn einer Thread-Pools und Arbeitselemente Gruppe suspendiert.
- Themen haben Vorrang.
- Kann COM-Objekte ausführen, die Single-Threaded-Wohnung.
- Support Action und Func Delegierten.
- Unterstützung für WindowsCE (haftungsbeschränkt)
- Die MaxThreads und MinThreads können zur Laufzeit geändert werden.
- Abbrechen Verhalten imporved wird.
Andere Tipps
Das ist ein bisschen Zunge in die Wange, aber wie über das .NET Framework? Die System.Threading
Namespace hat alles, was man dafür braucht.
Wenn Sie .NET 4, oder die Rückportierung im Rx-Framework verwenden können, die Task Parallel Library als auch einige dieser ein bisschen leichter machen können, aber auch ohne, dass hat der Standard-Framework alles, was man braucht.
Wenn Sie eine Scheduling-Bibliothek benötigen, die Multi-Threading-Unterstützung hat, habe ich verwendet, um diese vor: Quartz.NET