我目前正在使用几种方法来实现一个单例类。每种方法都使用相同的私有字段,该字段实际上是与数据库的连接。在每种方法中,读者都试图敞开心扉。如您所见,这是在整个应用程序范围内共享的单个连接。如果您在阅读器已经打开时尝试在 Ado.Net 中打开阅读器连接,则会发生异常。如果您在打开阅读器后忘记关闭阅读器,则可以打开此案例,但在我的案例中会发生这种情况,因为我使用多个线程来做一些事情。
我的问题是:我必须为每个方法实现不同的互斥对象还是为所有方法共享一个对象就足够了?
我知道单例很少有好的模式。我也知道共享连接不是一个好习惯,但请记住我的项目是一个 winforms 项目并且被认为是遗留项目。我的客户也不想为重新设计应用程序付费。我只想知道在这种情况下应该如何处理互斥锁。
非常感谢您的宝贵时间。