2009-07-20 57 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並將其保存在某個文件中。您可以在應用程序再次啓動時重新加載設置。