我在静态类中有以下代码:
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方法返回另一个类?
答案 0 :(得分:1)
您应该将e(RunWorkerCompletedEventArgs的实例)传递给ExchangeCompleted方法。并使用传递的结果属性。