运用 Electron 处置惩罚窗体崩溃和挂起

运用 Electron 处置惩罚窗体崩溃和挂起

此系列文章的运用示例已宣布于 GitHub: electron-api-demos-Zh_CN. 能够 Clone 或下载后运转检察. 迎接 Star .

《运用 Electron 处置惩罚窗体崩溃和挂起》

BrowserWindow 模块将在渲染器历程崩溃或挂起时发出事宜. 您能够监听这些事宜, 并给用户从新加载, 守候或封闭该窗口的时机.

在浏览器中翻开 完全的 API 文档 .

历程崩溃后重载窗体

支撑: Win, macOS, Linux | 历程: Main

《运用 Electron 处置惩罚窗体崩溃和挂起》

在这个示例中我们建立一个新窗口 (经由过程 remote 模块) 并供应了一个运用 process.crash() 要领强迫崩溃的链接.

当前窗体正在监听崩溃事宜, 当此事宜发作时, 它供应用户两个选项: 从新加载或封闭.

渲染器历程

const BrowserWindow = require('electron').remote.BrowserWindow
const dialog = require('electron').remote.dialog

const path = require('path')

const processCrashBtn = document.getElementById('process-crash')

processCrashBtn.addEventListener('click', function (event) {
  const crashWinPath = path.join('file://', __dirname, '../../sections/windows/process-crash.html')
  let win = new BrowserWindow({ width: 400, height: 320 })

  win.webContents.on('crashed', function () {
    const options = {
      type: 'info',
      title: '渲染器历程崩溃',
      message: '这个历程已崩溃.',
      buttons: ['重载', '封闭']
    }
    dialog.showMessageBox(options, function (index) {
      if (index === 0) win.reload()
      else win.close()
    })
  })

  win.on('close', function () { win = null })
  win.loadURL(crashWinPath)
  win.show()
})

历程挂起后重载窗体

支撑: Win, macOS, Linux | 历程: Main

《运用 Electron 处置惩罚窗体崩溃和挂起》

在这个示例中我们建立一个新窗口 (经由过程 remote 模块) 并供应了一个运用 process.hang() 要领强迫挂起历程的链接.

当前窗体正在监听历程是不是真正无相应 (这能够须要长达30秒). 当此事宜发作时, 它供应用户两个选项: 从新加载或封闭.

渲染器历程

const BrowserWindow = require('electron').remote.BrowserWindow
const dialog = require('electron').remote.dialog

const path = require('path')

const processHangBtn = document.getElementById('process-hang')

processHangBtn.addEventListener('click', function (event) {
  const hangWinPath = path.join('file://', __dirname, '../../sections/windows/process-hang.html')
  let win = new BrowserWindow({ width: 400, height: 320 })

  win.on('unresponsive', function () {
    const options = {
      type: 'info',
      title: '渲染器历程挂起',
      message: '这个历程已被挂起.',
      buttons: ['重载', '封闭']
    }
    dialog.showMessageBox(options, function (index) {
      if (index === 0) win.reload()
      else win.close()
    })
  })

  win.on('close', function () { win = null })
  win.loadURL(hangWinPath)
  win.show()
})

高等技能

守候历程再次相应.

在历程挂起的的情况下, 第三个挑选是守候并检察题目是不是处理, 许可历程再次相应. 为此, 请运用 BrowserWindow 的 “responsive” 事宜, 以下所示:

win.on('responsive', function () {
  // 当窗口再次相应时做些什么
})

假如这边文章对您有协助, 感谢 下方点赞 或 Star GitHub: electron-api-demos-Zh_CN 支撑, 感谢.

    原文作者:DemoPark
    原文地址: https://segmentfault.com/a/1190000008468648
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞