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

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属性。

10-08 05:33