2012-01-08 45 views
0

我在我的項目中創建了一個類,該類打開一個線程並不斷輪詢連接,如果連接關閉,它將檢索到另一個服務器的連接字符串。我想知道完成此操作的最佳實踐。我有一個叫做ServerMonitor的類,它有一個啓動和停止。我想把這一切都放在DAL中,因爲它與連接字符串有關,並且被我稱爲ConnectionStringFactory的類調用。我不能將它放在BLL或UI中,因爲它需要由DAL中的類訪問。運行線程檢索DAL中正確連接字符串的最佳實踐

ServerMonitor中的stop方法關閉線程並釋放資源。我認爲最好的方法是啓動線程是把它放在ServerMonitor的靜態構造函數中,但我不知道何時停止它。有沒有辦法從DAL中檢測和應用程序結束事件,或者有什麼方法可以知道程序已停止,並且需要關閉該線程?

+0

在過去,我已經在BLL上實現了基於哪個UI層請求數據的映射。雖然這可能不適合您的應用程序。在我的情況下,我需要根據連接到BLL的哪個UI連接到不同的數據庫。 – 2012-01-08 08:22:36

回答

0

如果程序停止,您可能不用擔心停止它。導致所有資源都假設被.net框架回收。

它認爲在您的服務器監視器類中提供一種方法可能更合適,以便更高級別的UI線程在他們想要停止時調用它。

0

根據您的描述,我認爲您不需要關閉該線程。

我認爲,當你的線程檢測到連接被關閉,它應該獲得下一個服務器的連接字符串,驗證它是可用的,然後記錄在DAL內的靜態位置是連接字符串。

此外,脫掉你的線程,你絕對應該有它在靜態構造函數或者,如果託管在IIS,在Global.asax中的的Application_Start踢它關閉。

另一種替代方法是在第一次啓動需要連接字符串的請求時(即在連接字符串get accessor中)啓動進程。