有没有办法监控数据库连接是否有中断?我有一个跨应用程序共享的连接,一些对象应该对连接中断做出反应。
理想情况下,它应该是一个事件。我发现的唯一一件事就是连接异常,但它是在本地引发的(我正在侦听异常)。
我有意从DbConnection
继承并在此对象中侦听异常(重载其方法),在连接错误异常(通过相关代码)上发出信号。但也许有最简单的方法。
感谢您的想法。
答案 0 :(得分:7)
分享单个连接永远不会好, IS 是一种不好的做法。主要原因实际上是你的问题。 我建议你稍微改变你的设计(不是什么大不了的事),并依赖于ADO.NET 连接池。如果您不想遇到各种瓶颈,尤其是在多线程情况下,这是必须的。
这意味着您的所有连接都是暂时的,只有在需要转到数据库时才创建连接。
您可以阅读有关它的更多信息here,您还可以在其中找到有关如何使用它的示例。要知道的主要事情是它使用了Disposable模式。
//Notice the **using ** block
using(SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
//do something with the connection.
//as soon as the using block ends, the managed connection is disposed and released in the pool
}