【发布时间】:2011-12-01 09:20:21
【问题描述】:
我的代码:
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(); 有什么想法吗?
【问题讨论】:
-
resourceConsumingFynction 会抛出任何进度事件吗?如果是这样,则捕获该事件,然后在内部调用 backgroundWorker ReportProgress 方法。然后捕获 bgw 进度事件并从那里更新 GUI。
-
您的方法可能会消耗大量资源,这可能是一种气味。也许您可以将
ResourceConsumingFunction()拆分为更小的方法,从而能够报告进度。
标签: c# progress-bar backgroundworker