如何在另一个应用程序域中释放静态连接



我得到了一个Windows服务应用程序,它可以在其他新应用程序域中动态加载其他一些模块。问题是它们都使用相同的静态数据库连接。我可以在关闭服务时在主 AppDomain 中释放静态连接。但是我怎样才能立即释放其他应用程序域中的其他静态连接。问题是由于其他连接仍然存在,即使我完全停止它,服务应用程序仍然在任务管理器中运行。

谢谢

问题是它们都使用相同的静态数据库连接。

是的,这绝对是一个问题。 别这样。 连接由 .NET 池化,创建成本不高,因此正确的模式是在需要时创建连接、使用连接并在完成后释放连接。 一种有效的方法是使用using语句。

一般来说,任何产生一次性物品的东西都负责处理它。 由于您的一次性物品是静态的,因此无法知道负责处理它的是什么。 所以你需要有逻辑来查看它是否已经被释放,它是否是开放的,它是否为空,等等。 将所有创建和处置逻辑保存在一个地方要干净得多。

最新更新