代码之家  ›  专栏  ›  技术社区  ›  arthur.sw

如何在cefpython中调用MessageLoopWork?

  •  2
  • arthur.sw  · 技术社区  · 11 年前

    我用 cefpython .

    我用过 cefpython.MessageLoop() 但我想用 browser.GetFocusedFrame().ExecuteFunction 它必须从主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
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   Czarek Tomczak    11 年前

    使用cefpython.PostTask()函数在各种CEF线程上发布任务。参见: https://code.google.com/p/cefpython/wiki/cefpython#PostTask_(int_threadId,_object_func_[,args..])_(void) 第61期。从31.0版开始提供。

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

    推荐文章