C# 如何使EAP方法同步工作

C# 如何使EAP方法同步工作,c#,wpf,asynchronous,async-await,C#,Wpf,Asynchronous,Async Await,我在WPF应用程序中使用CefSharp 3来使用基于铬的webBrowser控件。为了在htmlExecutScriptAsync中调用某些脚本,使用了方法。这是一个EAP(基于事件的异步模式),我想同步运行这个函数,因为异步运行它会在我的输出中造成巨大的混乱。 因为它是EAP,我不能等待它。 如果我等待它,它会抛出一个错误,说不能等待void 请帮助..这样做的目的是: 使事件处理程序发出事件信号 等待事件 如果您正在使用wait,则TaskCompletionSource是一个好的“事件”

我在WPF应用程序中使用CefSharp 3来使用基于铬的webBrowser控件。为了在html
ExecutScriptAsync
中调用某些脚本,使用了方法。这是一个EAP(基于事件的异步模式),我想同步运行这个函数,因为异步运行它会在我的输出中造成巨大的混乱。 因为它是EAP,我不能等待它。 如果我等待它,它会抛出一个错误,说
不能等待void


请帮助..

这样做的目的是:

  • 使事件处理程序发出事件信号
  • 等待事件

  • 如果您正在使用wait,则
    TaskCompletionSource
    是一个好的“事件”。如果您要进行同步,我可能仍然会使用它,并在TCS提供的任务上使用
    Wait

    您应该可以使用
    TaskFactory.fromsync
    来获得
    任务,您可以等待。我认为这只能用于APM(异步编程模型)实际上,它是可观察的。在反应式扩展库中的FromEventPattern
    。您应该能够使用
    Observable.FromEventPattern(…).Take(1).ToTask()
    从事件的第一个值创建
    任务。请参阅。但是请注意,如果您想执行
    任务。Wait()
    ,则可能会出现典型的死锁,除非您在单独的线程上托管CefSharp。您能帮我介绍一些示例吗?或者只是给我一些不错的教程链接,我可以遵循。我没有任何方便。有什么具体问题吗?这个想法清楚吗?好的,我会按照建议的方法去做,如果我的问题继续存在,我会给你回复。谢谢。:)