簡體   English   中英

my.Net SqlConnection object 是否自行關閉

[英]Does my .Net SqlConnection object close on its own

我們有一個簡單的循環過程,可以在一些數據行上做一些事情。

提交更改時,新行和 SqlConnection object 被傳遞給處理行更改或添加的方法。

該過程在 10 次中運行 5 次,一切正常。 SqlConnection 在循環開始時打開並在循環后關閉,但有時它確實在循環期間關閉。 代碼在循環期間的任何時候都不會調用 close() 。

所以我的問題是為什么它可能會自行關閉。

干杯

作為參考,代碼類似於以下內容

connection.Open();

foreach(DataRow row in rows)
{
  if(rubbish)
{
   //make some changes and save
   DatabaseConnector.Save(sqlStringToExecute, connection);
}
}

connection.Close();

連接不會自行關閉,不會。 連接關閉的主要時間是:

  • 處置(例如通過using語句)
  • 顯式調用Close()
  • 使用CommandBehaviour.CloseConnection行為執行命令
  • 垃圾收集 - 一種(雖然這有點不同,真的)
  • 服務器不再可用

如果您實際上遇到異常(可能是超時或死鎖),在using塊中彈跳(處理它),並且可能吞下異常,則第一種是很有可能的。

第三種在善意的代碼中是非常可能的。

要進行調查,您可以訂閱StateChange事件並在處理程序中添加斷點; 然后通過堆棧跟蹤向后走,您將確切知道是誰在關閉它,以及為什么要關閉它。 如果您使用超出此代碼的 scope 的連接,請記得取消訂閱。

暫無
暫無

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

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