gpt4 book ai didi

c# - 如何在 C# 中实现进度条?

转载 作者:IT王子 更新时间:2023-10-29 04:37:24 26 4
gpt4 key购买 nike

如何在 C# 中为数据库调用实现进度条和后台工作程序?

我确实有一些处理大量数据的方法。它们是相对长时间运行的操作,所以我想实现一个进度条,让用户知道某些事情正在发生。

我想到了使用进度条或状态条标签,但是由于只有一个UI线程,执行数据库处理方法的线程,UI控件不更新,使得进度条或状态条标签无用对我来说。

我已经看过一些示例,但它们处理的是 for 循环,例如:

for(int i = 0; i < count; i++)
{
System.Threading.Thread.Sleep(70);
// ... do analysis ...
bgWorker.ReportProgress((100 * i) / count);
}

private void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar.Value = Math.Min(e.ProgressPercentage, 100);
}

我正在寻找更好的例子。

最佳答案

有些人可能不喜欢,但我就是这样做的:

private void StartBackgroundWork() {
if (Application.RenderWithVisualStyles)
progressBar.Style = ProgressBarStyle.Marquee;
else {
progressBar.Style = ProgressBarStyle.Continuous;
progressBar.Maximum = 100;
progressBar.Value = 0;
timer.Enabled = true;
}
backgroundWorker.RunWorkerAsync();
}

private void timer_Tick(object sender, EventArgs e) {
if (progressBar.Value < progressBar.Maximum)
progressBar.Increment(5);
else
progressBar.Value = progressBar.Minimum;
}

Marquee 样式需要启用 VisualStyles,但它会自行连续滚动而无需更新。我将其用于不报告其进度的数据库操作。

关于c# - 如何在 C# 中实现进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1259949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com