当应用程序关闭时,DB连接会立即关闭吗?

这是我一直想知道的……会吗?

因为每当我编写代码来使用数据库连接时,我总会以某种方式确保在进入下一个进程之前关闭。

但是,当我有一个ChildWindow在其构造函数中打开一个连接而不是关闭它,直到它命中保存按钮或取消按钮。 然后,如果整个应用程序关闭,数据库连接会立即关闭吗? 或者它必须等待超时并自动关闭?

编辑:

所以我试图保持一个实时连接打开以记录我的应用程序上的所有错误:

public App() { ErrorHelper errorHelper = new ErrorHelper(); // Will open DB connection AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.UnhandledException += new UnhandledExceptionEventHandler(currentDomain_UnhandledException); } ///  /// For catch all exception and put them into log ///  void currentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { errorHelper.WriteError(e.ExceptionObject as Exception); } 

因为我不喜欢每次打开连接时都记录一个错误,所以我想一直保持连接打开。 这与我描述的OP类似。 在这种情况下,它始终保持连接打开。 但是数据库连接在退出后会立即关闭吗?

简短回答:始终在using语句中使用您的连接:

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

然后你就不必担心了 – 它会在超出范围时关闭,无论是方法结束,exception还是应用程序关闭。

因为我不喜欢每次打开连接时都记录一个错误,所以我想一直保持连接打开。

这就是连接池的用途。 您是否测量过您的表现,或者您是否确认有证据表明这是一个问题?

using块打开和关闭连接,让连接池完成它的工作。

如果您的流程退出,您的连接将被关闭。