簡體   English   中英

當應用程序關閉時,DB連接會立即關閉嗎?

[英]When application close, will DB connection close instantly?

這是我一直想知道的......會嗎?

因為每當我編寫代碼來使用數據庫連接時,我總會以某種方式確保在處理到下一個部分之前關閉。

但是,當我有一個ChildWindow在其構造函數中打開一個連接而不是關閉它,直到它命中保存按鈕或取消按鈕。 然后,如果整個應用程序關閉,數據庫連接會立即關閉嗎? 或者它必須等待超時並自動關閉?

編輯:

所以我試圖保持一個實時連接打開以記錄我的應用程序上的所有錯誤:

public App()
{

   ErrorHelper errorHelper = new ErrorHelper(); // Will open DB connection
   AppDomain currentDomain = AppDomain.CurrentDomain;
   currentDomain.UnhandledException += new UnhandledExceptionEventHandler(currentDomain_UnhandledException);

}

/// <summary>
/// For catch all exception and put them into log
/// </summary>
void currentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{

    errorHelper.WriteError(e.ExceptionObject as Exception);            

}

因為我不喜歡每次打開連接時都記錄一個錯誤,所以我想保持連接一直打開。 這與我描述的OP類似。 在這種情況下,它始終保持連接打開。 但是數據庫連接在退出后會立即關閉嗎?

簡短回答:始終在using語句中使用您的連接:

using (var db = new Connection())
{
    ...
}

然后你不必擔心 - 它會在超出范圍時關閉,無論是方法結束,異常還是應用程序關閉。

因為我不喜歡每次打開連接時都記錄一個錯誤,所以我想保持連接一直打開。

這就是連接池的用途。 您是否已經衡量了自己的表現,或者您是否確認了這是一個問題的有力證據?

using塊打開和關閉連接,讓連接池完成它的工作。

如果您的進程退出,您的連接將被關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM