2

我有一段代码将可用的服务器实例从我的 SQL 服务器获取到 DataTable。填充需要一些时间。所以我尝试添加一个进度条来指示那个时间。有一些方法可以做到这一点:

1.使用后台工作者
2.使用计时器

我使用了计时器,但进度条没有动画。

我的代码是(WinForm):

private void frmCodeGenerator_Load(object sender, EventArgs e)
    {
        Cursor.Current = Cursors.WaitCursor;
        tmrWaiting.Enabled = true;
        tmrWaiting.Start();

        //List all available servers
        PopulateServerInstances();
        //List all default namespaces to import

        //Set the target folder default path tec.

        tmrWaiting.Stop();
        Cursor.Current = Cursors.Default;
    }

private void tmrWaiting_Tick(object sender, EventArgs e)
        {            
            pbWaiting.Value++;
        }

光标正在将正常形式更改为等待状态,但进度条没有。我在做赖吗?

4

1 回答 1

2

在 UI 线程上运行的Load事件处理程序正在调用PopulateServerInstances,这可能在加载数据时阻塞。您需要在 BG 线程上完成这项工作,以便您的 UI 线程可以继续更新 UI。BackgroundWorker是您最好的选择,因为它支持在您进行时更新 UI 线程上的进度信息。

于 2013-03-12T09:49:38.203 回答