在使用.NET关闭之前保存状态

时间:2009-07-20 16:22:22

标签: c# .net shutdown

我想在关机之前保存我的机器状态(对于不支持hibernate的机器)。

基本上,我试图模仿Windows Hibernate功能。当机器重新打开时,它看起来就像以前关机一样。

有关使用托管代码执行此任务的任何想法吗?

目前正在使用/考虑Windows XP Service Pack 2。

3 个答案:

答案 0 :(得分:5)

对于计算机上运行的所有应用程序,使用纯托管代码是不可能的。事实上,即使使用非托管代码,您也会有一段时间。我不会说这是不可能的,但可能非常困难和时间消耗。

以下是一些有用的资源,可帮助您入门:

Windows内核上的Arun Kishan http://www.dotnetrocks.com/default.aspx?ShowNum=434

核心转储
http://en.wikipedia.org/wiki/Core_dump

setcontext
http://en.wikipedia.org/wiki/Setcontext

Raymond Chen关于“冬眠”单一流程的问题 http://blogs.msdn.com/oldnewthing/archive/2004/04/20/116749.aspx

对于您自己的应用程序,最好的办法是将您希望能够恢复的所有状态隔离到一组可序列化的类中。然后,在卸载(或定期)应用程序时,使用XMLSerializer将此数据保存到磁盘。再次加载应用程序时,再次使用XMLSerializer来重新保存包含应用程序状态的类,并使用此信息将用户界面返回到先前的状态。如果您有复杂的用户界面,这可能是一项耗时的任务。

答案 1 :(得分:0)

在程序退出之前,您必须自己保存。您可以将所有窗口状态序列化为xml并将其保存在某个文件中。您可以在再次启动应用程序时重新加载设置。

答案 2 :(得分:0)

也许the Vista Application Recovery API确实有帮助。虽然需要Vista。