的因素减缓我的代码,我做了一些文件迭代,有我的测试方案在文件中的行(约1.3万美元)的最大值=号的进度。进度由〜25 [异步]
使用进度条此迭代的文件(逐行)的需要大约2秒
使用进度条后并且对于每个大约需要50秒线一次递增它之前。
我的电话如下[MVP - 视图 - 的WinForms]
在主讲人:
return Task.Run(() =>
{
using (var reader = File.OpenText(FileName))
{
while (!reader.EndOfStream)
{
var currentLine = reader.ReadLine();
_splitterFormView.PerformStep(1);
if (currentLine.ToUpper().Contains("BLA"))
...
}
}
});
形式:
void PerformStep(int stepValue)
{
Invoke(new Action(() => { progressBarStatus.Increment(stepValue); }));
}
我试着BeginInvoke的,但没有运行时差异。
我做错了吗?
编辑:正如我所说,我已经试过的BeginInvoke - 运行时是相同的,但它似乎走得更顺畅。
你们是正确的 - 当我想起它,我不知道为什么我有最大价值是行数,做1 PerformStep()为每call..might是懒惰去了。
'Invoke' =等待UI,然后运行代理,你可能只是想'BeginInvoke',又名火和忘记。 – Sinatr
@Sinatr问题的第二个最后一行:'我尝试过BeginInvoke,但运行时没有区别。“ – EpicKip
您可能想要考虑报告百分比进度。更新UI 130万次不太可能是一种非常有效的方法。 –