C# 如何使EAP方法同步工作
我在WPF应用程序中使用CefSharp 3来使用基于铬的webBrowser控件。为了在htmlC# 如何使EAP方法同步工作,c#,wpf,asynchronous,async-await,C#,Wpf,Asynchronous,Async Await,我在WPF应用程序中使用CefSharp 3来使用基于铬的webBrowser控件。为了在htmlExecutScriptAsync中调用某些脚本,使用了方法。这是一个EAP(基于事件的异步模式),我想同步运行这个函数,因为异步运行它会在我的输出中造成巨大的混乱。 因为它是EAP,我不能等待它。 如果我等待它,它会抛出一个错误,说不能等待void 请帮助..这样做的目的是: 使事件处理程序发出事件信号 等待事件 如果您正在使用wait,则TaskCompletionSource是一个好的“事件”
ExecutScriptAsync
中调用某些脚本,使用了方法。这是一个EAP(基于事件的异步模式),我想同步运行这个函数,因为异步运行它会在我的输出中造成巨大的混乱。
因为它是EAP,我不能等待它。
如果我等待它,它会抛出一个错误,说不能等待void
请帮助..这样做的目的是:
如果您正在使用wait,则
TaskCompletionSource
是一个好的“事件”。如果您要进行同步,我可能仍然会使用它,并在TCS提供的任务上使用Wait
。您应该可以使用TaskFactory.fromsync
来获得任务,您可以等待。我认为这只能用于APM(异步编程模型)实际上,它是可观察的。在反应式扩展库中的FromEventPattern
。您应该能够使用Observable.FromEventPattern(…).Take(1).ToTask()
从事件的第一个值创建任务。请参阅。但是请注意,如果您想执行任务。Wait()
,则可能会出现典型的死锁,除非您在单独的线程上托管CefSharp。您能帮我介绍一些示例吗?或者只是给我一些不错的教程链接,我可以遵循。我没有任何方便。有什么具体问题吗?这个想法清楚吗?好的,我会按照建议的方法去做,如果我的问题继续存在,我会给你回复。谢谢。:)