У меня есть приложение Windows Forms, которое загружает dll @ runtime и выполняет метод с использованием Delegate.Проделанная работа заключается в загрузке файлов в WebApp и занимает много времени.Я хотел бы использовать 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 просто открывает форму, чтобы сообщить пользователю, что процесс загрузки завершен.У меня вопрос, как я могу получить int, который возвращается из метода UploadDocs, и передать его в метод ShowUploadResults, чтобы он мог отображать что-то вроде «55 файлов были успешно загружены»?