gpt4 book ai didi

c# - 从在后台工作人员中执行的委托(delegate)中获取值(value)?

转载 作者:行者123 更新时间:2023-11-30 21:20:27 24 4
gpt4 key购买 nike

我有一个 Windows 窗体应用程序,它在运行时加载一个 dll 并使用委托(delegate)执行一个方法。完成的工作基本上是将文件上传到 WebApp 并且非常耗时。我想使用 BackgroundWorker 在后台运行它,然后弹出一个表单,让用户知道上传已完成以及成功上传了多少文件。但是我不确定如何从 BackgroundWorker 中获取通过委托(delegate)调用的方法返回的 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];
//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 并将其传递给 ShowUploadResults 方法,以便它可以显示类似“55 个文件已成功上传”的内容?

最佳答案

将结果值赋给e.Result。然后它将作为 e.Result 在您的 ShowUploadResults 中可用。引自 MSDN docs :

“如果您的操作产生结果,您可以将结果分配给 DoWorkEventArgs.Result 属性。这将对 中的 RunWorkerCompleted 事件处理程序可用>RunWorkerCompletedEventArgs.Result 属性。”

关于c# - 从在后台工作人员中执行的委托(delegate)中获取值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3293111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com