我有一个winform,它读取第二个线程上的csv文件,将文件数据写入控制台。主窗体有一个进度条。我希望根据第二个线程中读取的数据行更新主窗体上的进度条。在我的第二个线程函数中,我使用:
pBar.BeginInvoke((MethodInvoker)delegate
{
this.pBar.Value = (int) (((double) nRows) / ((double) fileLines));
});
毋庸置疑,这似乎不起作用。任何建议都将不胜感激。
顺便说一句,我应该在第二个帖子中使用pBar.Show()和pBar.Hide()或设置pBar.Visible来显示/隐藏进度条吗?
谢谢。
答案 0 :(得分:1)
您可能只是将乘法乘以100而转换为百分比:
this.pBar.Value = 100*nRows/fileLines;
假设nRows
取值0
和fileLines
之间的值,那么您的代码将始终将进度条值设置为0
或1
。
我应该在第二个帖子中使用
pBar.Show()
和pBar.Hide()
还是设置pBar.Visible
来显示/隐藏进度条?
无论你在第二个线程中做什么,都不应该调用GUI控件的方法。使用BeginInvoke
或Invoke
封送到GUI线程。