我的表单中有一个按钮,当我单击按钮时,它将通过webservice从不同的表中获取数据。
我正在编写以下代码
private void imageButtonWorkOrder_Click(object sender, EventArgs e)
{
try
{
Cursor.Current = Cursors.WaitCursor;
//Code for to get data from 10 tables
}
catch
{
}
finally
{
Cursor.Current = Cursors.Default;
}
}
但我遇到的问题是光标没有旋转过程结束。它只是在一段时间后停止。
请建议我如何解决这个问题。
先谢谢, 巴鲁
答案 0 :(得分:1)
根据我们所知道的一点,说起来并不容易。可能导致您行为的一件事是,如果您的代码的这一部分:
//Code for to get data from 10 tables
永远将光标设置回Default,然后它不会等待你的finally块。运行的任何工作线程也可以将其更改回来 - 光标不是每个线程,并且它不是引用计数。
作为一个侧面观察,在点击处理程序中获取大量数据 - 特别是当需要足够的时间来保证等待光标时,这不是一个好习惯。即使我们不关注问题的分离(这段代码可能缺乏),整个UI也会显示为“锁定”给用户。您可以更好地将数据放在后台线程中,并在完成后向UI发出信号,以便在此时可以进行UI填充。