【问题标题】:Is there any way to Hibernate an Application?有没有办法让应用程序休眠?
【发布时间】:2010-10-12 02:56:13
【问题描述】:

(我不是在谈论 Hibernate 或 NHibernate ORM)

Windows 操作系统(和某些 linux 版本)具有“休眠”选项来保存状态并关闭机器。稍后当我们重新启动时,我们可以从之前存储的状态恢复。

有没有办法单独休眠应用程序?我的意思是我想通过保存它的状态来关闭应用程序,然后当我启动应用程序时,它应该从以前存储的状态恢复。

是否有可用的第三方工具,或者我可以使用第三方库将功能添加到我的应用程序中吗?

编辑:我有一个带有选项卡式界面和 50 多个输入控件的 .Net WinForm 应用程序。我需要一个解决方案来关闭应用程序,然后在文本框中使用相同的值重新启动。我可以编写一个例程来存储和恢复所有文本框值。但我正在寻找一些通用方法,它可以适用于任何应用程序。

【问题讨论】:

标签: windows-xp


【解决方案1】:

包含您拥有的内存的对象并不太难。问题来自操作系统拥有的资源(窗口、线程、信号量等)。您可以编写一些东西来保存/恢复这些操作系统拥有的资源的状态,但您仍然需要销毁/重新创建它们。

您这样做的目标是什么?

【讨论】:

    【解决方案2】:

    您可以将您的应用程序与其操作系统捆绑为“设备”,并使用 VMWare 之类的工具来休眠整个虚拟机。

    或者你可以使用 Smalltalk。

    (这两种方法都不是您可以轻松插入现有应用程序的方法,但是,您所要求的似乎确实需要“平台级支持”)。

    【讨论】:

      【解决方案3】:

      没有一个框架。正如您所建议的,实现此目的的最简单方法是将数据存储在可序列化对象中并将它们序列化到一个文件中,然后再将它们序列化回来。

      这并不难,并且可以帮助您完成大部分工作。它也相当通用——您只需要编写几行代码就可以将任意数量的可序列化数据序列化进出。

      对于更复杂的事情,例如光标之前所在的位置等状态,应在用户尝试关闭应用时推送到可序列化对象中,并在加载应用时手动推回。

      ...但是您的用户很可能不会关心这样的事情,他们可能只是关心数据是否恢复到原来的样子。

      【讨论】:

        【解决方案4】:

        Microsoft MED-V 应用程序虚拟化可能能够做到这一点,如果将来在操作系统本身中拥有更多应用程序虚拟化功能,那就太好了

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-12
          • 2022-06-13
          • 2013-08-13
          • 2016-11-13
          • 2021-02-07
          • 1970-01-01
          • 1970-01-01
          • 2023-04-04
          相关资源
          最近更新 更多