
因此,对于所有这些 *** 作,需要相当长的时间.所以我使用后台工作程序将此代码移动到另一个线程中,一切都很好,除了我想在我失败的进度条中显示加载状态.
我使用fileInfo类来获取文件长度,然后将此值赋给Progressbar.Maximum.似乎不是正确的方法,因为包含“3”行的测试文件返回的文件长度为“305”.我不明白我应该采用这种方式的步数间隔.
代码示例:
fileInfo ff = new fileInfo(openfileDialog1.filename);int fsize= Convert.ToInt32(ff.Length);int val=1;pgbar_load.Invoke(new MethodInvoker(delegate { pgbar_load.Maximum = fsize; })); 并在循环中:
++val;wk.ReportProgress(val);
然后:
private voID bgwrkr_load_ProgressChanged(object sender,ProgressChangedEventArgs e){ pgbar_load.Value = e.Progresspercentage;} 所以我要找的两件事:
>设置进度条的最大值.
>正确设置步骤索引.
请建议我前进的方法.
解决方法 将Progressbar.Maximum保持为100.然后在int变量中跟踪读取数据.在UI线程上运行循环(您可以使用计时器执行此 *** 作),通过检查读取的字节来设置进度条百分比的值.例如.假设您将读取的字节存储在int totalRead中;和int totalfileSize包含文件的大小.myProgressbar.Value = Convert.ToInt32(Math.Ceil(100d * totalRead/totalfileSize));
您可以将它放在计时器刻度事件处理程序中.这将逐步将进度条运行到100%.文件读取完成后,禁用计时器.
总结以上是内存溢出为你收集整理的c# – 进度条和文件加载全部内容,希望文章能够帮你解决c# – 进度条和文件加载所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)