C#根据任务数更新Pr​​ogressBar

时间:2014-06-16 23:13:44

标签: c# listview foreach backgroundworker

我的应用程序遇到了一个小问题。我有一个ProgressBar,我在C#中使用backGroundWorker更新,更新progressBar不是问题因为我只是调用reportProgress方法。

但是假设我有一个包含项目的listView框,并且我想报告每个项目处理后的进度,我可以使用listView1.Items.Count()获取listView中的项目总数。但我无法弄清楚如何为报告工作......

示例:

如果我的listView中有7个项目,则每个项目可能会占用不同的时间,具体取决于listView文件大小(它是转换音频文件的媒体转换项目)所以我不能只调用线程睡眠函数进度条。我需要知道用于使progressBar更新的代码,或者我可以在循环中运行的代码,如

foreach(ConversionQueue.Items.Count()中的ListViewItem项) {}

任何帮助表示赞赏...

由于

3 个答案:

答案 0 :(得分:0)

我不完全确定我是否正确理解你的问题,但据我所知,这可能是你问题的解决方案:

首先获取要完成的工作总量(文件总大小)。这是ProgressBar的最大值。为每个项目分配它所代表的工作量(此单个文件的大小)。任务完成后,将已完成的工作量添加到进度条值,您就可以了。

答案 1 :(得分:0)

只需将最大值设置为列表视图中的项目数即可。每个项目完成后,在进度条的值中添加一个。并且您的进度条完美地代表了已完成/将要完成的项目数。

答案 2 :(得分:0)

设置Progressbar.maximum = listview.items.count

并在 ProgressChanged 事件中将其增加1