2009-03-09 5 views
1

(Я не говорю о Hibernate или NHibernate ORM)Есть ли способ спящего приложения?

ОС Windows (и некоторые версии Linux) имеют функцию «Hibernate» для сохранения состояния и завершения работы машины. И позже, когда мы перезагружаемся, мы можем возобновить работу из предыдущего сохраненного состояния.

Есть ли способ спящего режима в одиночку? Я хочу, чтобы я закрыл приложение, сохранив его состояние, а позже, когда я запустил приложение, он должен вернуться из предыдущего сохраненного состояния.

Есть ли какие-либо сторонние инструменты, или я могу добавить эту функцию в свое приложение, используя сторонние библиотеки?

Редактировать: У меня есть приложение .Net WinForm с интерфейсом с вкладками и более 50 элементов управления вводом. Мне нужно решение для завершения работы приложения и перезапуск позже с теми же значениями в текстовых окнах. Я могу написать процедуру для хранения и восстановления всех значений текстового поля. Но я ищу какой-то общий метод, который может работать для любого приложения.

+0

Вы можете посмотреть по адресу: //en.wikipedia .org/wiki/Persistence_% 28computer_science% 29 если вам нужна своего рода hybernation в приложении, которое вы разрабатываете. – 2012-09-09 21:22:13

ответ

1

Вы можете связать приложение с ОС как «устройство» и использовать что-то вроде VMWare для спящего режима всей виртуальной машины.

Или вы можете использовать Smalltalk.

(Оба подхода - это не то, что вы можете легко подключить к существующему приложению, но эй, что вы просите, похоже, требует «поддержки на уровне платформы»).

0

Объекты, содержащие вашу память, не слишком сложны. Проблема связана с ресурсами, которыми владеет ОС (окна, потоки, семафоры и т. Д.). Вы могли бы написать что-то, что сохранили/восстановили состояние этих ресурсов, принадлежащих ОС, но вам все равно нужно их уничтожить/воссоздать.

Ваши цели являются?

0

Для этого нет рамки. Простой способ достичь этого, как вы предположили, состоит в том, чтобы хранить ваши данные в сериализуемых объектах и ​​сериализовывать их в файл, а затем сериализовать их позже.

Это не сложно и доставит вам большую часть пути. Он также довольно общий - вам нужно всего лишь написать несколько строк для сериализации любого количества сериализуемых данных.

Для более сложных вещей, например, когда курсор был ранее и т. Д., Следует вставлять в сериализуемый объект, когда пользователь пытается закрыть приложение и вручную отбрасывается при загрузке приложения.

... но, скорее всего, ваши пользователи не будут заботиться о таких вещах, они, вероятно, просто беспокоятся о том, что данные вернулись к тому, как это было.

1

виртуализация MED-V Применение Microsoft может быть в состоянии сделать такую ​​вещь, было бы неплохо иметь больше возможностей для виртуализации приложений в самой ОС в будущем

Смежные вопросы