Electron - 主菜单模板,调用函数,需要来自渲染器的信息
Electron - Menu template on main, calling function, requires information from renderer
在 Electron 主进程上,我有一个菜单模板。在该菜单模板上,我有一个关闭功能。我的应用程序使用数据库来存储信息。在关闭功能上,我想调用渲染器以获取打开的记录的当前 ID,以便在关闭数据库之前保存它。我想知道是否有一种方法可以在主进程上调用函数并 return 来自渲染器进程的 id 值。我可以确定这样做的唯一方法是以下 BrowserWindow.getFocusedWindow().webcontents.send("closing"),然后 ipcRenderer.send 使用 id 返回 main。似乎应该有更简单的方法来做到这一点。
谢谢
不幸的是,此时此刻,主线程没有类似于 ipcRenderer.invoke(channel, ...args)
的内容。
正如您所指出的,您需要使用 app.on('before-quit', () => {...} );
方法并在其中轮询渲染线程以获取当前 ID 并等待其 return.
或者,为了保持渲染线程的空闲和响应,您可以在主线程中管理当前 ID,因此无需在关闭之前调用渲染线程。这就是我所做的。所有繁重的工作都在主线程中完成(例如数据库调用、文件系统读取/写入、API 调用),渲染线程仅通过 IPC 消息/数据更新反映状态。
在 Electron 主进程上,我有一个菜单模板。在该菜单模板上,我有一个关闭功能。我的应用程序使用数据库来存储信息。在关闭功能上,我想调用渲染器以获取打开的记录的当前 ID,以便在关闭数据库之前保存它。我想知道是否有一种方法可以在主进程上调用函数并 return 来自渲染器进程的 id 值。我可以确定这样做的唯一方法是以下 BrowserWindow.getFocusedWindow().webcontents.send("closing"),然后 ipcRenderer.send 使用 id 返回 main。似乎应该有更简单的方法来做到这一点。
谢谢
不幸的是,此时此刻,主线程没有类似于 ipcRenderer.invoke(channel, ...args)
的内容。
正如您所指出的,您需要使用 app.on('before-quit', () => {...} );
方法并在其中轮询渲染线程以获取当前 ID 并等待其 return.
或者,为了保持渲染线程的空闲和响应,您可以在主线程中管理当前 ID,因此无需在关闭之前调用渲染线程。这就是我所做的。所有繁重的工作都在主线程中完成(例如数据库调用、文件系统读取/写入、API 调用),渲染线程仅通过 IPC 消息/数据更新反映状态。