【发布时间】:2013-03-12 09:30:09
【问题描述】:
我有一段代码将可用的服务器实例从我的 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++;
}
光标从正常状态变为等待状态,但进度条没有。我做错了吗?
【问题讨论】:
-
你设置
pbWaiting.Maximum了吗? -
是的。来自 Visual Studio 属性编辑器。
pbWaiting.Maximum = 100和pbWaiting.Visible = true -
您使用的是什么 INTERVAL?如果它太大,可能是在任务完成时它没有触发?此外,无论实际进展如何,这都会算上?这只是虚拟代码吗?
-
@Belogix 我认为这不太可能。默认情况下,
Timer.Interval设置为 100 毫秒。 -
这里的问题是,当它开始加载数据库时,它主要锁定整个窗口,在所有内容完全加载之前不允许任何其他事情发生(比如你的进度条)。我建议您为此使用线程,以便您的进度条在获取数据的同时运行。我从albahari.com/threading 学到的一个很好的例子
标签: c# timer progress-bar