防止electron打开多个应用示例

vof42yt1  于 11个月前  发布在  Electron
关注(0)|答案(2)|浏览(190)

根据官方电子文档,我使用以下方法:

export const onAppTryLaunch = () => {
  const gotTheLock = app.requestSingleInstanceLock();

  // if another app instance is already running
  if (!gotTheLock) {
        app.quit();
  } else {
    // main instance event
    app.on('second-instance', () => {
      openMainWindow(); // my function to focus/restore app window
    });
  }
};

字符串
但它导致了一个问题-新的应用程序进程无论如何都会出现,并作为幽灵留在系统的进程列表中。
准确地说:在第二次启动时,electron启动了几个新的应用程序进程,除了一个进程之外,所有进程都关闭了,但其中一个进程总是作为幽灵存在,消耗系统的资源,并且不会在主进程退出时关闭。
有没有人知道如何避免这段破碎的代码?
在类似的问题,我发现只有我用的方式已经在这一个和旧的API(无法使用在当前版本)。

wnvonmuf

wnvonmuf1#

我通过在任何其他代码**之前调用onAppTryLaunch()(带有电子API以防止新示例启动的函数)**找到了解决方案。
是的,app.quite()无论如何都应该关闭应用程序,但有时它不会(你认为它会,但应用程序的新幽灵进程已经启动,如果主应用程序已关闭,它将不会关闭),即使app.exit()也不会有帮助,所以请确保在调用任何其他东西之前关闭应用程序,甚至在应用程序准备就绪之前。

cu6pst1q

cu6pst1q2#

我就是这么做的,我不像你那样有鬼魂的问题。

app.on("second-instance", () => {
  if (!mainWindow) return;

  if (mainWindow.isMinimized()) mainWindow.restore();
  mainWindow.focus();
});

字符串

相关问题