当前位置: 首页 > 知识库问答 >
问题:

如何在应用程序通过任务管理器被杀死时保存数据?

胡劲
2023-03-14

为了防止应用程序的数据因任务管理器的“结束任务”而丢失,我尝试在WM_CLOSE事件的函数处理程序中保存数据。

如果我通过Alt F4或“关闭”按钮关闭了应用程序,该应用程序可以成功保存数据。但是当我通过任务管理器杀死它时,保存数据的过程无法正常进行。似乎保存进程中途终止了。

我试图通过VS2015 IDE调试它,调试器成功地拦截了WM_CLOSE处理程序中的断点,但它无法进一步,点击F10单步执行导致我的应用程序立即关闭。

有什么方法可以延迟终止进度,直到我的应用程序完全保存数据?

我在下面找到了两个链接,但没有帮助。

如何在后台进程上处理Windows任务管理器中的“结束任务”?

任务管理器如何杀死我的程序?

共有1个答案

贺俊材
2023-03-14

任务管理器可能会决定您的应用程序没有响应,并终止它。你不能对它做任何事情。

如果要确保始终保存数据,则应在后台不断保存(使用一些启发式方法,例如至少每分钟保存一次,最好是在几秒钟内未发生更改之后)。它更复杂,但具有即使您根本不会收到WM_CLOSE(例如在断电的情况下)也可以工作的优势。

 类似资料:
  • 我第一次在firebase上工作,了解firebase的脱机功能,测试了两个场景: 设想1(工作): > 按后退按钮(关闭应用程序) 场景2(不工作): 脱机模式,将数据写入firebase数据库 关闭应用程序 从后台删除应用程序(删除应用程序) 已联机,未添加数据 我加了一行: 如何处理场景2?我需要通过本地数据库处理这个场景吗?

  • 我的目标是每12小时更新一次我的应用令牌(使用网络请求),无论应用程序是在后台还是被杀死,所以我使用workmanager来解决这个问题。但周期性任务仅在应用程序处于后台或打开状态时有效,但当我杀死应用程序时,周期性任务停止以更新我的应用程序令牌。 这是我的代码: 我正在使用workmanager 2.4.0版本

  • 在我的应用程序中,我有一个在后台(和前台)运行。 在这个中,有一个,当它完成时,我想在某个中启动应用程序并在中自动执行一些操作,即使我的应用程序被杀死或关闭,我也希望它能正常工作。 我看到了一些答案,这是其中之一,但它对我不起作用。我找到了一个更好的解决方案,并将其作为答案发布在下面,但仍然只有在应用程序关闭但未完全关闭时才有效。 如何从后台启动,即使应用程序已关闭或关闭?

  • 另外,是否有可能在保留用户数据的同时清除使用ADB的应用程序的缓存?似乎清除了所有用户数据。我只想清除缓存。 我之所以这么问是因为我正在对一些用户应用程序进行性能测试。为了使每个测试有效,我希望确保没有任何用户应用程序有任何任务,活动,服务和缓存已经在后台。

  • 问题内容: 我需要搜索某个进程并杀死该进程。我写了这样的命令: 进程名称为。但这是行不通的。我如何才能按名称及其名称查找流程。 问题答案: