首页 > 解决方案 > 如果上一个会话意外关闭,RInno 闪亮的应用程序将无法启动

问题描述

我使用令人惊叹的RInno包为 Windows 制作了一个桌面闪亮的应用程序,但我在启动该应用程序时遇到了一些不一致的问题。有时应用程序不会正确退出其会话,使 R 在后台运行。他们的 github 建议在服务器函数中使用这段代码来确保 R 在会话结束时正确终止。我可以知道应用程序何时正确退出,因为我包含一个自定义函数,该函数将日志文件复制到新的索引名称以进行记录和调试。

if (!interactive()) {
session$onSessionEnded(function() {
  write_logs_out() #My custom function. renames logs and stores backups of session data in .rds files
  stopApp()
  q("no")
 })
}

在这些情况下,不会创建一个新的日志文件,所以我假设stopApp()并且q("no")永远不会执行,让 R 在后台运行。一个主要问题是我不知道如何重现此错误。我目前的猜测是,当本地 R 会话无响应时会发生这种情况。虽然 R 仍在后台运行,但闪亮的应用程序从未完全打开到网络浏览器。我首先需要打开任务管理器并退出任何 R 会话(通常名称为“R 前端”),以使应用程序再次运行。

由于我不知道如何预期这个随机错误,我想知道是否有任何 Windows 专家可以帮助我编写一个脚本来检查 R 进程是否正在运行,然后将其杀死。这至少会

我知道

tasklist | findstr Rscript.exe

将列出所有当前正在运行的 Rscripts(我相信这是我在任务管理器中看到的“R 前端”),但我不知道在taskkill /IM "Rscript.exe" /F调用 .wsf 文件的行之前简单地包含是否是不好的做法启动应用程序。

我看到的主要问题是,如果会话运行良好并且用户出于某种原因再次单击应用程序,它将强制完全重启。

有什么建议么?

标签: rwindowsshiny

解决方案


推荐阅读