【问题标题】:How to prevent(delay) OS(Windows 10) from closing Electron window?如何防止(延迟)操作系统(Windows 10)关闭电子窗口?
【发布时间】:2020-01-13 18:11:05
【问题描述】:

我使用 electron + node.js 制作了一个桌面应用程序。 有时 Windows 会自动更新并重新启动操作系统。 我想阻止 Windows 10 重新启动,直到数据保存在软件中(数据库在线,因此需要一些时间来存储数据)。

现在,我正在使用下面的代码来防止窗口关闭。数据保存后,我正在调用 ipcMain.on('',function()) 方法并将 lockwindow 设置为 true,然后我正在调用窗口关闭方法。 它在正常关闭窗口或使用快捷键关闭窗口时工作。 但是在强制关闭或关机/重启的情况下不会发出此事件

mainWindow.on('close', event => {
        if (lockWindow) {
            mainWindow.webContents.send('save', '');
            mainWindow.webContents.once('dom-ready', () => {
                mainWindow.webContents.send('save', '');
            });
            event.preventDefault();
            createdialogWindow();
        } else
            mainWindow = null
    })

谢谢。

【问题讨论】:

    标签: node.js electron


    【解决方案1】:

    查看窗口事件,特别是close and beforeunload

    无论如何,您在系统重新启动之前只有有限的时间。

    如果操作系统或用户决定终止您的应用程序,无论如何都会发生这种情况(您也可能因为玩得不好而让用户感到不安/愤怒)。

    最后,您是否希望您的应用程序成为未安装某些重要安全更新的原因?

    HTH

    【讨论】:

    • 测量这些回调之间的时间,以了解您有多少时间可以玩。
    • 通常数据保存需要 15-25 秒,但这也取决于互联网速度。所以这不会有帮助。如果我们可以将控制权交给用户以确认关闭(由操作系统)应用程序,那么它将有所帮助。
    • 你必须重新考虑整个事情 - 在很多情况下,你不会得到比几秒钟更多的通知,通常更少。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2019-11-11
    • 1970-01-01
    相关资源
    最近更新 更多