【发布时间】:2016-11-02 08:38:22
【问题描述】:
我目前正在从事一个项目。它是一个 C# WinForms 项目。基本上,使用应该加载一个 file.dat 并处理该文件以生成一些文件的其他格式导出。当我需要在导出功能运行时更新进度条时,问题就开始了,因为方法导出在其他程序集中的其他类中,因为我将我的项目分为 3,我有一个 dll,它是控制台的常用方法应用程序和图形应用程序,因此我无法更改从 dll 导出的方法,因为控制台应用程序依赖于该实现。
我有一个允许打开文件并单击导出按钮的表单,当我单击导出时,创建一个新表单并且在导出方法起作用时进度条开始更新。在导出方法中,我不能添加更多参数,因为其他类依赖于初始实现。
所以我需要知道如何在方法中处理文件时更新进度条,每个输入文件生成超过 1 个文件。
我的导出函数是:
这是来自一个程序集的一类:
public static void Export(File file, string output, string inputFile,BackgroundWorker worker)
{
//Other operations
//......
//
for (int m = 0; m < variable.Count; m++)
{
ExportoFile(varibel, output);
worker.ReportProgress(m + 1);
}
worker.CancelAsync();
}
如你所见,现在我有了它,并且程序以这种方式运行。
这是来自其他程序集的另一个类(Form):
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
var worker = sender as BackgroundWorker;
Exporter.Export(file, output, inputFile, worker);
}
void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// The progress percentage is a property of e
progressBar.Value = e.ProgressPercentage;
progressLabel.Text = ((100 * (e.ProgressPercentage))/size ).ToString() +"%";
if (e.ProgressPercentage == size)
{
worker.CancelAsync();
this.Close();
}
}
从我的表单中,我创建了一个后台工作人员,当我导出一个文件时它会更新进度。但是我需要另一种方法来处理它,因为我的导出方法是错误的。我不必发送工人作为参数,因为原始方法没有,其他类取决于原始实现。
总之,如何在不修改我的导出方法的情况下从其他程序集中的其他类导出文件时更新进度条?
【问题讨论】:
标签: c# winforms progress-bar backgroundworker