2010-01-20 47 views
2

在WPF应用程序中,我使用内部的LINQ to SQL查询try - catch构造来处理异常,以防DB服务器连接出现问题。什么是不断检查SQL Server连接的标准方法?

问题是 - 我有一些查询在计时器轮询的基础上执行。所以,如果连接失败,我有许多长时间的查询尝试和UI冻结。

什么是标准出路?我想轻松轻松地检查db连接是否正常,然后用我所有的查询做所有的事情。

回答

5

在backgroundworker线程或完全独立的线程中运行它。

不应该在UI线程上完成工作,除非它直接与UI本身相关。 BackgroundWorker是一个可以让线程这样的东西非常简单的对象。有关教程,请参阅this entry。它解释了后台工作人员在做什么以及如何使用它。

如果您在UI线程上工作,则您正在从UI中窃取CPU周期,导致其对用户感觉缓慢。运行它自己的线程和然后更新用户界面是最好的方式来做到这一点。这样用户可以做其他的事情,用户界面的响应正常。

+0

谢谢!关于链接上的教程文章是关于Windows窗体应用程序的,请告诉我,BackgroundWorker是否也适用于WPF应用程序? – rem 2010-01-20 17:54:58

+0

谷歌说“是”)+1 – rem 2010-01-20 18:04:11

+0

是的,backgroundworker将工作在WPF – Malfist 2010-01-20 18:09:28

3

为什么不把你的轮询查询移动到他们自己的线程上,这样他们就不会冻结UI?然后他们可以向主UI线程发出消息或事件,并且可以在那里处理它(弹出错误消息等)。

+0

感谢您的想法! +1 – rem 2010-01-20 18:04:57

相关问题