我有一个应用程序,它坐落在任务栏中并定期检查数据库(通过SQLConnection)。如果无法连接到数据库,它只会在通知图标上显示红色状态,什么也不做。这是有意的,因为用户将在设施之间旅行,数据库只能在内部网络上或通过VPN连接时才能访问。
问题是当数据库无法连接时,我仍希望通知图标上下文菜单能够响应。目前,如果用户在数据库正在尝试连接时尝试与菜单交互,线程将被连接尝试锁定。
我想要的是在单独的线程中进行数据库连接,但我知道在线程之间共享连接对象是不好的。一旦数据库连接成功,我需要从原始线程查询它。有没有好的方法可以做到这一点?
我知道我可以有一个函数在新线程中运行,并简单地检查连接是否失败,然后如果返回成功,原始线程就可以继续并连接自己的数据库对象。但这种方法似乎是一个不好的解决方法。有什么好的想法吗?
谢谢!
感谢您的建议-我从中学到了很多。最终,我做了我应该从一开始就做的事情。主(UI)线程只需在需要定期数据库更新时启动一个新线程(其中包括数据库对象的创建和连接)。
因此,就像HenkHolterman在我的原始消息中建议的那样,我实际上不需要在单独的线程中创建数据库并运行操作。
一旦我升级到VS2010,我一定会有兴趣使用SqlConnection.OpenAsync。
再次感谢。