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?

War es hilfreich?

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

http://quartznet.sourceforge.net/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top