Visual c++ EvaluateScript Async挂起CLR应用程序中的浏览器

Visual c++ EvaluateScript Async挂起CLR应用程序中的浏览器,visual-c++,clr,cefsharp,chromium-embedded,Visual C++,Clr,Cefsharp,Chromium Embedded,我正在实现一个MFC MDI视图类,其中我使用Cefsharp winforms作为CLR类。我面临一个关于在Cefsharp中使用EvaluateScript Async的问题。我希望使用EvaluateScript Async运行javascript代码,然后将结果返回到我的本机视图类(CWinFormsView)。 ExecuteScriptAsync运行良好。 此外,每当创建应用程序类时,“我的视图”应用程序都会加载COM组件。 问题是,当我使用EvaluateScript Async中

我正在实现一个MFC MDI视图类,其中我使用Cefsharp winforms作为CLR类。我面临一个关于在Cefsharp中使用EvaluateScript Async的问题。我希望使用EvaluateScript Async运行javascript代码,然后将结果返回到我的本机视图类(CWinFormsView)。 ExecuteScriptAsync运行良好。 此外,每当创建应用程序类时,“我的视图”应用程序都会加载COM组件。 问题是,当我使用EvaluateScript Async中的wait时,浏览器会冻结,它永远不会返回,并显示一个消息框,其中显示“服务器可能正忙”,并显示“切换到”、“重试”和“取消”按钮

下面是我对Browserctrl CLR类的实现:

System::String^ CEFBrowser::CLR_UserControl::Eval(String^ sScript)
{
    auto task_js = CefSharp::WebBrowserExtensions::EvaluateScriptAsync(m_Browser,sScript);
    task_js->Wait();
    if(task_js->IsCompleted)
    {
        return task_js->Result->ToString();
    }
}

The task_js->Wait() never returns.

PS-我正在使用CefSharp.WinForms.84.4.10和cef.redist.x86.84.4.1 nuget软件包。

EvaluateScript async是一个异步函数,您不建议以同步方式调用它。你可能阻塞了一个你不应该阻塞的线程,没有足够的代码来确定。请确保您没有在任何CEF线程上创建COM,您只会遇到问题。感谢您的洞察力……但我如何从javascript中获得结果?我所能找到的只是在线博客上与Wait一起使用的EvaluateScript Async。ContinueWith可能是一个选项。