gpt4 book ai didi

C# BackgroundWorker 返回一个值

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:04 24 4
gpt4 key购买 nike

我在静态类中有以下代码:

public static string ExchangeDataAsync(string request)
{
BackgroundWorker bgWorker = new BackgroundWorker();

bgWorker.DoWork += (obj, e) => ExchangeData(request, e);
bgWorker.RunWorkerCompleted += (obj, e) => ExchangeCompleted(obj, e);

bgWorker.RunWorkerAsync();

// I NEED T0 RETURN DATA HERE
}

private static void ExchangeData(string request, DoWorkEventArgs e)
{
// do some work
e.Result = some_result;
}

private static void ExchangeCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show(e.Result.ToString());
}

它工作正常,我可以在 ExchangeCompleted 方法中看到我的结果。但是我怎样才能在第一种方法中访问这个结果呢?有没有办法从 bgWorker 对象获取结果?

我在另一个类中像这样使用它(因此 ExchangeDataAsync 应该返回一个值):

string response = Global.ExchangeDataAsync(request);

UPD。

sharpcloud 是对的。在这种情况下,函数不是异步的。您对如何从 exchangecompleted 方法返回值到另一个类有什么好的建议吗?

最佳答案

您应该将 e(RunWorkerCompletedEventArgs 的实例)传递给 ExchangeCompleted 方法。并使用传递的 e 的 Result 属性。

关于C# BackgroundWorker 返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16335185/

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