后台工作者报告进度c#

本文关键字:报告 工作者 后台 | 更新日期: 2023-09-27 18:16:13

我的代码:

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();什么好主意吗?

后台工作者报告进度c#

如果你不能修改ResourceConsumingFunction,那你就倒霉了。

既然ResourceConsumingFunction做了所有的工作,如果你不能修改它来报告进度,你怎么能期望能够显示进度呢?其余的代码不能神奇地猜出ResourceConsumingFunction在完成之前要运行多长时间。

正如Øyvind knobloch - br然后正确指出的那样-如果你不能从ResourceConsumingFunction中获得有关进度的信息,那么你就不能报告它。
您需要以某种方式挂钩到ResourceConsumingFunction以度量其进度。它是创建文件,写东西到磁盘或改变可访问的变量,你可以衡量/使用作为进度值,而无需访问功能的工作?

如果你不能得到这个函数进程的外部句柄,那么你就完蛋了。