电子窗口应用程序关闭不结束线程



我有一个Electron应用程序,运行在Windows上,它在主窗口上有一些控件和一个取消按钮。我注意到当它运行时,我看到两个线程,我假设主线程和渲染器线程。单击取消按钮时,渲染器将向主线程发送 IPC 消息,主线程调用 app.quit。在这些条件下,两个线程结束。如果我右键单击应用程序的Windows任务栏中的图标并选择"关闭",则线程仅在应用程序在VSCode调试器下运行时结束,当应用程序在没有调试器的情况下运行时并且完成相同的操作时,两个线程仍然存在。

我该如何调试?关于为什么会发生这种情况的任何建议。

在调试器下,我看到关闭被捕获在主线程中,并调用了 app.quit。

更新:由于该应用程序使用了Electron 1.7.9,因此我已将其更新为使用2.0.8,以防万一这是一个已解决的问题。但是,对于2.0.8,问题仍然存在。

席德

感谢Electron Slack社区的一些意见,我已经解决了这个问题。我的错误在于我调用 app.quit(( 方法的方式。

我的代码在"关闭"事件上处理 MainWindow,并在该事件处理程序中执行 app.quit(( 方法。

关闭应用程序的正确方法是处理应用程序"window-all-closed"事件并在那里执行 app.quit(( 方法。

这是发送给我的Electron应用程序的骨架主.js的要点,以帮助我解决问题。

https://gist.github.com/sidprice/612cb49cec923eeb94cfcddf1736c181

席德

最新更新