按照我之前的帖子iam尝试完成这项工作
我有以下代码(编辑):
public partial class Form1 : Form
{
...
private TaskDialog Taskbar = new TaskDialog();
}
private void timer1_Tick(object sender, EventArgs e)
{
Taskbar.ProgressBar.Value = progressBar1.Value;
}
private void button2_Click(object sender, EventArgs e)
{
bgWorker.RunWorkerAsync();
}
bgWorker_dowork()
{
timer1.Enabled = true;
timer1.Start();
while(progressBar1.Value < progressBar1.Maximum)
{
progressBar1.Value++;
}
}
我做错了什么?
编辑:我不能让它在任务栏上最小化时显示进度条,尽管我做了更改建议..
答案 0 :(得分:3)
那是因为你阻止了你的GUI线程
while(true)
{
progressBar1.Value++;
}
这将导致它锁定并阻止它更新UI。
永远不要在你的主线程上运行这样的循环,使用BackGroundWorker
这样的东西。
答案 1 :(得分:0)
确保进度条的值不超过最大值。
while (progressBar1.Value < progressBar1.Maximum)
{
progressBar1.Value++;
Application.DoEvents();//This will update the UI paintings
//which is not happening prior to this code.
}