6

我正在尋找一個好的庫,最好在C#中,我可以在Windows服務中使用它,它將處理所有需要的多線程功能。多線程Windows服務的線程庫

該服務將每x分鐘運行一次,檢查數據庫以調用進程,併爲每個進程生成一個線程並運行它。

每個線程都應該處理異常,日誌記錄等。

有什麼建議嗎?

+0

任何帶有完整源代碼示例的最終解決方案? – Kiquenet 2013-01-31 21:15:14

回答

4

考慮這個項目 http://www.codeplex.com/smartthreadpool

項目描述

智能線程池是用C#編寫線程池。它比.NET內置線程池更先進。 以下是線程池功能的列表:

  • 線程數根據池中線程的工作負載而動態改變。
  • 工作項目可以返回一個值。
  • 工作項目可以取消。
  • 調用者線程的上下文用於工作項目執行(有限)時。
  • 使用最少數量的Win32事件句柄,因此應用程序的句柄計數不會爆炸。
  • 調用者可以等待多個或所有工作項目完成。
  • 工作項目可以有一個PostExecute回調,在工作項目完成後立即調用。
  • 伴隨工作項目的狀態對象可以自動處理。
  • 工作項例外被髮回給調用者。
  • 工作項目優先。
  • 工作項目組。
  • 調用方可以暫停線程池和工作項組的開始。
  • 線程優先。
  • 可以運行具有單線程單元的COM對象。
  • 支持Action和Func委託。
  • 支持WindowsCE(受限)
  • MaxThreads和MinThreads可以在運行時更改。
  • 取消行爲是imporved。
+1

Fahad, 這正是我正在尋找的。 如果有人有一個更好的主意,我會等待,否則我會將你的標記作爲答案。謝謝 – anon2009 2010-01-06 20:09:52

5

這是有點舌頭,但.NET框架呢?命名空間有你需要的所有東西。

如果您可以使用.NET 4或Rx框架中的backport,任務並行庫也可能使這一點變得更容易一些,但即使沒有這些,標準框架也可以滿足您所需的一切。

+0

裏德, 我正在尋找一個完整的解決方案,使用System.Threading的代碼實現。 不,我現在還不能使用4.0。 謝謝。 – anon2009 2010-01-06 20:07:27

+0

你可以使用Rx框架嗎?它包含Task Parallel庫的完整後端庫,它提供了大量的可用性(比迄今爲止我見過的任何第三方庫更好)。 – 2010-01-06 20:34:49

2

如果您需要一個具有多線程支持的調度庫,我以前使用過這個:Quartz。NET

http://quartznet.sourceforge.net/

+0

你能舉個例子說明你如何使用它嗎? – anon2009 2010-01-06 20:28:49

+0

網站上有一個很好的教程,但您基本上可以設置調度「觸發器」(基於cron語法),以確定作業何時觸發,然後將特定作業與觸發器相關聯。 Quartz.NET「Scheduler」爲您處理所有時間,並在設定的時間調用您的作業。 http://quartznet.sourceforge.net/tutorial/index.html – 2010-01-06 20:49:56

+0

我們用它來啓動定期的數據庫查詢,從而導致其他操作觸發。 – 2010-01-06 20:51:01