我有一个长时间运行的 for-each 循环,并且想知道是否有一种惯用的方法来添加一些视觉用户反馈,以便用户不会认为应用程序崩溃了。
private void btnRunLongRunningTask_Click(object sender, EventArgs e)
{
foreach(string path in Directory.EnumerateFiles(@"path"), "*.ext", SearchOption.AllDirectories))
{
var result = LongRunning.Task(path);
string resultPath = Manipulate(path);
// write result to resultPath
}
}
这可能会有所帮助:任务本身并不需要很长时间,但任务可能会很多。
关于如何实现这一目标有什么建议吗?由于我给出了一个目录作为参数,我想我应该查找任务将执行多少次,然后相应地更新进度条,在后台工作人员中运行任务和更新代码,并注意跨线程访问问题。
您可以将工作移至BackgroundWorker 并使用ReportProgress 方法。
for (i = 0; i < count; i++)
{
// do work
worker.ReportProgress((100 * i) / count);
}
private void MyWorker_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
taskProgressBar.Value = Math.Min(e.ProgressPercentage, 100);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)