我的代码:
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerSupportsCancellation = true;
worker.WorkerReportsProgress = true;
worker.ProgressChanged += new ProgressChangedEventHandler (worker_ProgressChanged);
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
ResourceConsumingFunction();
};
worker.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args)
{
Finished(true);
};
worker.RunWorkerAsync();
我希望经常报告进度,但不知道如何做到这一点。我无法修改resourceConsumingFunction(); 有什么想法吗?
答案 0 :(得分:3)
如果你不能修改ResourceConsumingFunction
你的运气不好。
由于ResourceConsumingFunction
执行所有工作,如果您无法修改它以报告进度,那么您希望如何显示进度?其余的代码无法猜测ResourceConsumingFunction
在完成之前要运行多长时间。
答案 1 :(得分:1)
正如ØyvindKnobloch-Bråthen正确指出的那样 - 如果你无法从ResourceConsumingFunction获取有关进展的信息,那么你就无法报告。
您需要一些方法来挂钩ResourceConsumingFunction来衡量其进度。它是创建文件,将某些内容写入磁盘还是更改可以测量/用作进度值的可访问变量而无法访问该功能的工作方式?
如果你无法获得关于这个功能进展的外部处理,那么你就注定了。