0

我的表单中有一个按钮,当我单击按钮时,它将通过 web 服务从不同的表中获取数据。

我正在写下面的代码

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;            
    }
}

但我面临的问题是光标没有旋转过程结束。它只是在一段时间后停止。

请建议我如何解决这个问题。

提前致谢, 巴鲁

4

1 回答 1

1

根据我们所知道的很少,这并不容易说。可能导致您的行为的一件事是,如果您的代码的这一部分:

//Code for to get data from 10 tables

曾经将光标设置回默认值,然后它不会等待您的 finally 块。任何运行的 Worker 线程也可以将其改回 - Cursor 不是每个线程,也不是引用计数。

作为一个侧面观察,在点击处理程序中获取大量数据 - 特别是当需要足够的时间来保证等待光标时,这不是一个好习惯。即使我们不考虑关注点分离(这段代码可能缺少),整个 UI 也会对用户显得“锁定”。您最好在后台线程中获取数据并在完成时向 UI 发出信号,以便它可以在那时进行 UI 填充。

于 2012-03-09T15:29:48.833 回答