dll @ runtime을로드하고 대리인을 사용하여 메서드를 실행하는 Windows Forms App이 있습니다. 기본적으로 완료된 작업은 파일을 웹 애플리케이션에 업로드하는 것으로 시간이 오래 걸립니다. BackgroundWorker를 사용하여 백그라운드에서 실행 한 다음 업로드 완료 및 얼마나 많은 파일이 성공적으로 업로드되었는지 사용자에게 알려주는 팝업을 표시하고 싶습니다. 그러나 BackgroundWorker 내에서 대리인을 통해 호출되는 메서드에서 반환되는 int를 가져 오는 방법을 잘 모르겠습니다. 그래서 여기Backgroundworker 내에서 실행 된 대의원의 가치를 되 찾으세요?
는 작업을
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];
//populate the array with parameters
IFileReleaseHandler handler(IFileReleaseHandler)Activator.CreateInstance(type, param);
ReleaseFileDelegate RFD = new ReleaseFileDelegate(handler.ReleaseFiles);
int numberOfFilesUploaded = RFD.Invoke(Source, Dest);
return numberOfFilesUploaded;
}
을 수행하는 코드입니다 그리고 여기가 BackgroundWorker에
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에 전화를 어떻게 바로 업로드 사용자가 알 수 있도록 양식을 엽니 다 프로세스가 완료되었습니다. 제 질문은 UploadDocs 메서드에서 반환 된 int를 가져 와서 "55 파일을 성공적으로 업로드했습니다"와 같이 표시 할 수 있도록 ShowUploadResults 메서드에 전달하는 방법입니다.
+1 - 자세한 정보 - http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.dowork.aspx –