gpt4 book ai didi

c# - 为什么 progressBar 显示从结束到开始倒数的进度?

转载 作者:太空宇宙 更新时间:2023-11-03 23:21:02 27 4
gpt4 key购买 nike

int countUploadMsg = 0;

private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
int counter = 0;
allLoadedMessages = new List<OpenPop.Mime.Message>();
OpenPop.Mime.Message loadedMessage = null;
DirectoryInfo di = new DirectoryInfo(@"e:\test\");
FileInfo[] files = di.GetFiles();
foreach (FileInfo file in files)
{
loadedMessage = OpenPop.Mime.Message.Load(file);
allLoadedMessages.Add(loadedMessage);
int nProgress = (files.Length - counter + 1) * 100 / files.Length;
backgroundWorker2.ReportProgress(nProgress);
counter += 1;
}
}

private void backgroundWorker2_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
pbt1.Value = e.ProgressPercentage;
pbt1.Text = e.ProgressPercentage.ToString() + "%";
pbt1.Invalidate();
lvnf.Items.Add(new ListViewItem(new string[]
{
allLoadedMessages[countUploadMsg].Headers.From.ToString(), //From Column
allLoadedMessages[countUploadMsg].Headers.Subject, //Subject Column
allLoadedMessages[countUploadMsg].Headers.DateSent.ToString() //Date Column
}));

countUploadMsg += 1;
}

变量 pbt1ProgressBar

我看到的是 ProgressBar 绿色为 100%,文本为 100%,然后它开始向后移动绿色和文本 100% 99% 98%...

也许与我正在做的计算有关:

int nProgress = (files.Length - counter + 1) * 100 / files.Length;

files.Length 也应该是 files.Length-1?

最佳答案

是的,你没看错。这是你的计算。

int nProgress = (files.Length - counter + 1) * 100 / files.Length;

由于 counter += 1;,您的 counter 正在增加,而您的 files.Length 是恒定的。那么nProgress肯定会因为上面的计算而越来越少。因此,您可以将 100% 降为 0%。

你不应该反过来做,即:使用计数器作为累进指标吗?

int nProgress = counter * 100 / files.Length; //use counter here...

此外,您可能希望在调用后台工作进程之前增加计数器:

foreach (FileInfo file in files)
{
loadedMessage = OpenPop.Mime.Message.Load(file);
allLoadedMessages.Add(loadedMessage);
counter += 1; //put before the progress;
int nProgress = counter * 100 / files.Length;
backgroundWorker2.ReportProgress(nProgress);
}

关于c# - 为什么 progressBar 显示从结束到开始倒数的进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35451120/

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