【发布时间】:2015-04-26 09:46:27
【问题描述】:
我们正在编写一个程序,它使用 CefSharp 从一些 javascript 繁重的网页中获取数据。
运行一段时间后,通常是在我们完成之后,但有时在之前,控制台会记录一条消息说Destroying nonempty message queue,然后程序会冻结。
当消息出现时我什至无法暂停调试器,VS 在尝试时因调试器超时而崩溃。
是什么导致消息队列被删除?
【问题讨论】:
-
听起来您可能正在破坏 CEF 断言(这会终止进程)。你在后台线程上做任何工作吗?你试过新版本 39 了吗?
-
我使用的是版本 39。当我使用绑定的 javascript 对象时,在 CEF 给我的回调线程上做一些简单的事情,此外我使用的任务意味着我不知道到底是什么线程的东西发生在但它应该主要在我的主线程上。
-
我应该澄清“销毁非空消息队列”不是错误的原因。这是一些内部 CEF 调试输出并且是正常的(至少,它对我来说经常发生,没有任何崩溃)。
-
回调并不总是在正确的线程上调用以调用 CEF。我会在你所有与 CefSharp 相关的调用之前添加日志记录,这样你就可以找出哪个正在杀死它。同时记录线程 ID 也会提供信息。获得解决这个棘手问题的最简单方法是发布您的源代码或派生 CefSharp MinimalExample 以重现该问题 (github.com/cefsharp/CefSharp.MinimalExample)。
标签: c# chromium-embedded cefsharp