2009-07-20 71 views
2

我想在关闭之前保存机器的状态(对于不支持休眠的机器)。在关闭之前使用.NET保存状态

本质上,我试图模仿Windows休眠功能。当机器重新启动时,它看起来与之前关闭的机器完全相同。

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

目前使用/考虑的Windows XP Service Pack 2的

+0

我想我们在这里需要更多的信息。你运行一个程序吗?你想保存你的程序的状态?或所有的窗口(所有打开的程序?为什么不使用休眠? – cRichter 2009-07-20 16:26:20

回答

5

为了您的计算机上运行的所有应用程序,这根本就不是使用纯托管代码可能。事实上,即使使用非托管代码,你也会有一段时间。我不会说这是不可能的,但可能非常困难,而且时间很漫长。

这里有一些有用的资源,让你开始:

阿伦·基尚对Windows内核
http://www.dotnetrocks.com/default.aspx?ShowNum=434

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

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

雷蒙德陈上“冬眠”单流程
http://blogs.msdn.com/oldnewthing/archive/2004/04/20/116749.aspx

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

0

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