【发布时间】:2016-05-26 23:51:21
【问题描述】:
我有一个 Windows 服务应用程序,它在其他新的应用程序域中动态加载一些其他模块。问题是它们都使用相同的静态数据库连接。当我关闭服务时,我可以在主 AppDomain 中处理静态连接。但是我怎样才能立即处理其他 AppDomain 中的其他静态连接。问题是由于其他连接仍然存在,即使我完全停止它,服务应用程序仍然在任务管理器中运行。
谢谢
【问题讨论】:
我有一个 Windows 服务应用程序,它在其他新的应用程序域中动态加载一些其他模块。问题是它们都使用相同的静态数据库连接。当我关闭服务时,我可以在主 AppDomain 中处理静态连接。但是我怎样才能立即处理其他 AppDomain 中的其他静态连接。问题是由于其他连接仍然存在,即使我完全停止它,服务应用程序仍然在任务管理器中运行。
谢谢
【问题讨论】:
问题是它们都使用相同的静态数据库连接。
是的,这绝对是个问题。不要那样做。连接由 .NET 汇集并且创建起来并不昂贵,因此正确的模式是在需要它们时创建它们,使用它们,并在完成后处理它们。一种有效的方法是使用using 语句。
一般来说,任何创建一次性对象的东西都负责处理它。由于您的一次性物品是静态的,因此无法知道是什么负责处理它。因此,您需要有逻辑来查看它是否已被释放、是否打开、是否为空等。将所有创建和释放逻辑保存在一个地方会更简洁。
【讨论】: