我有一段代码将可用的服务器实例从我的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++;
}
光标正在从正常状态更改为等待状态,但进度条没有更改。我在做赖特吗?
最佳答案
您的UI线程上正在运行的Load
事件处理程序正在调用PopulateServerInstances
,它可能在加载数据时阻塞。您需要在BG线程上执行此操作,以便您的UI线程可以继续更新UI。 BackgroundWorker
是最好的选择,因为它支持在您进行操作时更新UI线程上的进度信息。
关于c# - 带有计时器的进度栏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15357527/