setInterval 使用 Electron 一小时后停止

2024-03-12

希望有人能在这里指出我正确的方向。我的电子应用程序需要每 10 分钟左右执行一次 API 调用。目前,我在渲染器进程中使用 setInterval 循环来执行此操作,该循环每 10 分钟触发一次。

它通常工作得很好,几个小时后似乎就停止了。我有几个进程可以清除并重新启动 setInterval 来尝试解决该问题,但似乎没有任何效果。

该应用程序会打开新的浏览器窗口并显示内容,这意味着主窗口可能不会一直处于焦点状态,我怀疑这可能与此有关。

我尝试过添加

powerSaveBlocker.start("prevent-display-sleep");
powerSaveBlocker.start("prevent-app-suspension");

到我的主要电子js脚本,但它似乎没有效果。该问题主要出现在 Windows 机器上。我不完全确定它是否发生在 Mac 或 Linux 上。

所以我的问题是,是否有任何原因会发生这种情况,即间隔在某个点之后就消失了? powerSaveBlocker 调用对我来说很有意义,但它们似乎并没有真正执行任何操作。

或者是否有更好的方法让后台进程定期运行来执行这些 API 调用?我看过node-schedule但我不确定它是否会解决这个问题。


在这里回答我自己的问题,感谢@snwflk,他在对原始帖子的评论中为我指明了正确的方向。

虽然我无法绝对肯定地澄清这可以解决问题,但从那以后我也没有看到这个问题。 (它并不总是 100% 可重现,并且很难测试,因为它需要一台机器,单独放置几个小时,这可能会或可能不会显示问题)。

然而,我已经向一些客户推出了修复程序,几天后他们的机器似乎仍然在线,这是一个好兆头。

所以,解决方案是禁用backgroundThrottling在主要的BrowserWindow对象(间隔在渲染器进程中运行)

Docs: https:// Electronjs.org/docs/api/browser-window#new-browserwindowoptions https://electronjs.org/docs/api/browser-window#new-browserwindowoptions

一个例子

mainWindow = new BrowserWindow({
    webPreferences: {
        backgroundThrottling: false,
    },
});

仅供参考,请注意有一些错误导致此设置无法工作,即https://github.com/electron/electron/issues/20974 https://github.com/electron/electron/issues/20974所以请务必更新您的电子版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

setInterval 使用 Electron 一小时后停止 的相关文章

随机推荐

  • 如何将 NSURLSessionConfiguration 配置到 NSObject 类中?

    我想得到服务器响应NSObject当我收到响应时 它已返回到 viewController as 我在服务器调用上实现NSObject上课然后我打电话给NSObject方法但在服务器响应之前我的NSString已返回为null NSObje
  • Python 中的非二叉树数据结构

    有谁知道我如何重新创建这个 最终目标是遍历树并计算每个端点 在这种情况下3因为1 3 2都是端点 如果您不想使用简单的列表 您可以构建一个基本类 就像是 class NonBinTree def init self val self val
  • 如何在 Fragment 中使用 MediaPlayer 到 SurfaceView

    因为我希望能够传递播放视频的 MediaPlayer 所以我想在播放视频的片段中使用 SurfaceView 而不是 VideoView 我看了一个先前的问题 https stackoverflow com questions 167005
  • 操作处理程序不适用于视图本身

    操作处理程序不能直接在视图实例上工作吗 我想将其直接附加到整个视图本身 而不是在视图中附加操作处理程序 示例 jsFiddle http jsfiddle net t3wdG http jsfiddle net t3wdG UPDATE 我
  • from 子句中的 JPA 子查询

    我们正在开发一个使用 EJB 连接到数据库的 Web 应用程序 在我们的数据库模型中 我们有一个移动设备表 另一个具有功能的表 最后一个将功能值与手机型号进行映射 模型 id model 特征 id feature model featur
  • 从cfscript中的coldfusion newQuery()获取结果元数据

    关于 CFscript 的文档在文档中有点稀疏 并且搜索 cfscript 特定答案会在 CF 标签答案中丢失 所以这是我的问题 如何从使用脚本执行的查询中获取结果元数据 使用我可以添加的标签result myNamedResultVar
  • 如何在 Swift 中迭代对象数组?

    我有物体 var person1 Person person1 name Joe person1 lastName Doe person1 age 21 var person2 Person person2 name Julia perso
  • 像文字处理器一样格式化文本的 iPhone 应用程序

    很抱歉提出这样的一般性问题 但我想知道是否 以及如何 可以编写一个 iPhone 应用程序 在不同页面上格式化 txt 文件 就像 Microsoft Word 在布局模式下打开一个新文档时所做的那样 并且粘贴一个txt文件 换句话说 我不
  • 如何重新加载当前页面?

    我有一个用于编辑用户的页面 里面有一些子组件 每个子组件都可以更改其父组件或对其父组件产生一些影响 因此 我没有向父级发出更改并更新某些字段 而是使用 重新加载 当前页面 private route ActivatedRoute reloa
  • android:minHeight 在 web 视图中不起作用

    我有以下 xml 文件
  • 使用 loadData 在 UIWebView 中显示 PDF

    我正在尝试显示本地存储在 UIWebView 中的 PDF 这就是我目前尝试执行此操作的方式 if NSFileManager defaultManager fileExistsAtPath self url LOG ERROR Could
  • 如何返回 JsonResult [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在编写这个 AJAX 方法时遇到问题 我想返回一个JsonResult 似乎是合乎逻辑的事情 我能找到的所有例子都可以使用Jso
  • 在Python中访问第n维[重复]

    这个问题在这里已经有答案了 我想要轻松读取多维 numpy 数组的某些部分 对于任何数组 访问第一维都很容易 b index 另一方面 访问第六维度是 困难的 尤其是阅读 b index the next person to read th
  • 角度 HTTP POST 请求

    我在 Angular2 和 Spring MVC 中构建一个应用程序 当我尝试向我的服务器发出 POST 请求时 我没有收到任何成功或失败的迹象 但请求没有发生 因为我看不到新的数据 当我从邮递员那里发出请求时 请求成功 我可以看到新数据
  • 什么时候应该使用 MySQLi 而不是 MySQL?

    有人可以帮我解释一下使用 MySQLi 而不是 MySQL 的优点和缺点吗 是否存在不应该使用 MySQLi 的情况 为了使用 MySQLi 我是否需要以不同的方式配置我的服务器 例如 我是否需要升级 Apache 或 PHP 才能支持 M
  • 如何创建带有百分比计数器的 jQuery 预加载器?

    我编写了从一本 jQuery 初学者书中学到的代码 它非常适合作为页面的预加载器 但我如何为其创建百分比 计数器呢 基于加载了多少正文内容 目前我只有一个动画 GIF 但我想要一些更高级的东西 Lets preload window loa
  • 使用转换器和提供程序而不是属性映射时如何让 ModelMapper.validate() 成功?

    有类似的东西 Getter Setter public static class Entity private int hash private LocalDateTime createdTime and Getter Setter pub
  • 调用 oncontextmenu 时 Firefox 浏览器的事件未定义

    我在右键单击页面中的按钮时显示上下文菜单 用于显示上下文菜单的代码是 window addEventListener contextmenu function e e preventDefault false 当我右键单击按钮时 调用的上下
  • 解决 git merge octopus 上的冲突

    章鱼合并是指合并2个以上的头 用户应该如何使用普通的三向合并工具比较文件 3 个文件被传递到合并工具 BASE LOCAL REMOTE 3 个头需要多少个以及什么组合 在这种情况下 您不应该使用章鱼合并 八达通合并仅应在不存在合并冲突或冲
  • setInterval 使用 Electron 一小时后停止

    希望有人能在这里指出我正确的方向 我的电子应用程序需要每 10 分钟左右执行一次 API 调用 目前 我在渲染器进程中使用 setInterval 循环来执行此操作 该循环每 10 分钟触发一次 它通常工作得很好 几个小时后似乎就停止了 我