如何在cefpython中调用MessageLoopWork?

How to call MessageLoopWork in cefpython?

我用 cefpython 制作了一个简单的屏幕外渲染器。

我使用了 cefpython.MessageLoop() 但我想用 browser.GetFocusedFrame().ExecuteFunction 执行一个 javascript 函数,它必须从主 UI 线程调用。

有没有办法在cefpython的消息循环上设置回调?

或者我可以使用 MessageLoopWork,但我不知道如何使用。我试图在单独的线程中调用它,但它不起作用:

import threading

def main_loop():
    cefpython.MessageLoopWork()
    threading.Timer(0.01, main_loop).start()

threading.Timer(0.01, main_loop).start()

我收到以下错误:

[0324/174806:ERROR_REPORT:context.cc(146)] Check failed: false. called on invalid thread

使用 cefpython.PostTask() 函数在各种 CEF 线程上执行 post 任务。请参阅:https://code.google.com/p/cefpython/wiki/cefpython#PostTask_(int_threadId,_object_func_[,args..])_(void) 和第 61 期。它从 31.0 版开始可用。

wxpython.py 示例显示了如何将计时器与 MessageLoopWork() 和 MessageLoop() 一起使用。