我需要调用一个 C dll 作为后台进程。dll 的执行很耗时,因此我想在主 GUI 上显示一个进度条。为了使用 ReportProgress,我需要能够通过引用传递两个参数,并在参数值发生变化时更新进度条。但是, RunWorkerAsync 似乎只接受值(而不是引用)。
我该怎么做?
谢谢。
这是简化的代码:
public void button1_Click(object sender, EventArgs e)
{
//Variable declarations and initializations
List<object> arguments = new List<object>();
arguments.Add(curgen);
arguments.Add(dataindex);
backgroundWorker1.RunWorkerAsync(arguments);
backgroundWorker1.ReportProgress(curgen * 100 / ngen, "GEN");
backgroundWorker1.ReportProgress(dataindex * 100 / (DIMENSION * FITNESSCASES), "DATA");
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
List<object> genericlist = e.Argument as List<object>;
// Getting variables from object
calldll.gpinnovization(ref curgen, ref dataindex);
}
我想通过引用传递“curgen”和“dataindex”。