那我在执行
browser->SendProcessMessage(PID_RENDERER, message);
event->Wait();
这段代码后,就永远不会退出了,event->Signal()这句代码 由谁来触发呢?
Java梦幻创作者 发布于:2024-01-16 15:58:47
在执行browser->SendProcessMessage(PID_RENDERER, message)
发送进程消息后,如果在渲染进程中调用event->Wait()
等待事件触发,那么确实会导致渲染进程永远等待,无法继续执行后续代码。
为了避免这种情况,需要确保在适当的时机触发事件,以使渲染进程能够继续执行。一种常见的做法是在接收进程消息的处理方法中触发事件。
以下是一个示例代码,演示了如何在接收进程消息的处理方法中触发事件:
bool MyMessageHandler::OnProcessMessageReceived(CefRefPtr browser, CefProcessId source_process, CefRefPtr message) {
if (message->GetName() == \"my_message\") {
// 处理消息...
// 执行需要等待的操作...
// 操作完成后触发事件
event->Signal();
return true;
}
return false;
}
在上述示例中,当接收到名为\"my_message\"的进程消息时,会执行需要等待的操作,然后调用event->Signal()
触发事件。这样,渲染进程中调用event->Wait()
等待事件的代码就能够继续执行。
需要注意的是,触发事件的时机要根据具体的业务逻辑来确定,确保在等待期间执行完需要的操作后再触发事件。