2012-02-24 49 views
0

我目前正在使用Windows服務進行數據庫調用並執行一些工作,然後等待幾秒鐘再次運行。在工作過程中,我必須連接到數據庫,並且我希望將數據庫連接保留在某個地方,我知道這些對象完成後會被清理乾淨。Windows服務上下文,如網站HttpContext

我想使用類似HttpContext的東西,但顯然Windows服務沒有這樣的東西。每次通話後確保我的連接妥善處理的最佳方式是什麼?

+0

恕我直言:通常我只是關閉連接,不用擔心丟棄對象。 CLR在後臺執行連接池,並決定如何以及何時處置和/或重用已刪除所有引用的連接。如果你遇到性能問題,只擔心它。 – Bill 2012-02-24 20:34:29

回答

0

始終存在靜態屬性可能。所以你可以把它保存在一個類的靜態變量中。

public class ServiceContext 
{ 
    public static DbConnection Connection {get; set;} 
} 

然而,這不是好的做法。看起來您需要:

  1. 將操作封裝在類中。這將運行並關閉連接。
  2. 使用Async範例來運行該操作。數據庫調用正在進行時,您將確保不會竊聽服務的主要操作。

最好是使用TPL:Task<T>