【问题标题】:CefSharp crashes with "Destroying nonempty message queue"CefSharp 因“销毁非空消息队列”而崩溃
【发布时间】: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)。
  • 您可以加快日志记录,请参阅github.com/cefsharp/CefSharp/blob/master/CefSharp.Example/…

标签: c# chromium-embedded cefsharp


【解决方案1】:

目前我们没有解决问题,而是找到了一种方法来判断进程何时崩溃(基本上我们等待三分钟,如果我们没有来自浏览器的回复,我们假设它崩溃了),当进程停止时,我们将部分结果返回给用户,用户有责任要求提供其余数据。

关于崩溃本身,目前尚不清楚具体原因,但似乎我们正在做一些事情来使渲染过程崩溃,并且因为我们不通过 WCF 通道请求任何东西,所以我们不知道发生了什么崩溃.

【讨论】:

    猜你喜欢
    • 2019-12-06
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多