我有一个Windows窗体应用程序,它加载一个dll@runtime并使用委托执行一个方法。
我想使用BackgroundWorker在后台运行它,然后弹出一个表单,让用户知道上传完成,有多少文件成功上传。
但是我不知道如何从BackgroundWorker中获取通过委托调用的方法返回的int。
所以这里是代码做的工作
private int UploadDocs(object sender, DoWorkEventArgs e)
{
Assembly a = Assembly.LoadFrom(this.txtReleaseScript.Text);
Type type = a.GetType("FileReleaseHandler", true);
string[] param = new string[8];
IFileReleaseHandler handler(IFileReleaseHandler)Activator.CreateInstance(type, param);
ReleaseFileDelegate RFD = new ReleaseFileDelegate(handler.ReleaseFiles);
int numberOfFilesUploaded = RFD.Invoke(Source, Dest);
return numberOfFilesUploaded;
}
下面是我在后台工作中的称呼
private void btRelease_Click(object sender, EventArgs e)
{
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(UploadDocs);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.ShowUploadResults);
bw.RunWorkerAsync();
}
ShowUploadResults只是打开一个表单,让用户知道上传过程已经完成。