异步函数返回false,但应返回true

时间:2019-09-16 10:23:23

标签: c# function asynchronous boolean

我对返回以下值的函数有疑问:

问题是:返回成功运行在实际的:sucess = true之前,因为它是一个异步函数。

此函数成功执行后如何返回true?

public bool onefunction(ChromiumWebBrowser browser) {
  bool success = false;
  browser.GetMainFrame().EvaluateScriptAsync("someinfo").ContinueWith(t => {
    if (t.IsFaulted == false) {
      var response = t.Result;
      if (response.Success) {
        success = true;
      }
    }
  });

  //It returns false because this code runs before: "success = true"
  return success;
}

1 个答案:

答案 0 :(得分:4)

“一路异步”-方法:

public async Task<bool> onefunction(ChromiumWebBrowser browser) {
  bool success = false;
  try
  {
      var response = await browser.GetMainFrame().EvaluateScriptAsync("someinfo");
      succes = response.Success;
  }
  catch( Exception ex )
  {
      // TODO: Write Errorlog
  }

  return success;
}

注意:这意味着您也需要更改调用代码。如果您不能这样做,请告知。我们将为这种情况找到解决方案。