查找文件时的进度条
本文关键字:文件 查找 | 更新日期: 2023-09-27 18:31:46
嗨,我正在尝试在后台显示进度条,代码正在循环,直到找到具有特定名称的文件。
我为此编写了以下代码,但进度条值不会更改。
我应该在下面的代码中更改什么?
public partial class Form1 : Form
{
BackgroundWorker backgroundWorker1 = new BackgroundWorker();
public Form1()
{
InitializeComponent();
progressBar1.Visible = false;
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.DoWork +=
new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.ProgressChanged +=
new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
backgroundWorker1.RunWorkerCompleted +=
new RunWorkerCompletedEventHandler(backgroundWorker1_WorkDone);
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
progressBar1.Visible = true;
}
void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
// Your background task goes here
for (int i = 0; i <= 100; i++)
{
// Report progress to 'UI' thread
backgroundWorker1.ReportProgress(i);
// Simulate long task
while (!File.Exists(@"C:'Users'Test.txt"))
{
continue;
}
}
}
void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
// The progress percentage is a property of e
progressBar1.Value = e.ProgressPercentage;
}
void backgroundWorker1_WorkDone(object sender,
RunWorkerCompletedEventArgs e)
{
progressBar1.Visible = false;
}
}
代码中的continue
将一直持续到while(true)
循环的下一次迭代。 它不会像您期望的那样返回到for
循环 - 它只是一遍又一遍地循环。 如果它不是后台工作线程,它会挂起您的整个程序。 既然是,它只是挂起了那个线程。 我希望一个 CPU 内核在运行时保持在 100%。
话虽如此,虽然这里的目标令人钦佩,但没有好的方法来实现它。 即使您修复了无限循环,您的进度条也会以较低的百分比(1%,2%,3%,完成)"完成"或上升到100,然后停止更新,但该文件尚不存在。