Есть ли способ перевести приложение в спящий режим? - PullRequest
1 голос
/ 09 марта 2009

(я не говорю о Hibernate или NHibernate ORM)

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

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

Имеются ли сторонние инструменты или я могу добавить функцию в свое приложение с помощью сторонних библиотек?

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

Ответы [ 4 ]

1 голос
/ 27 мая 2011

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

1 голос
/ 09 марта 2009

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

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

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

0 голосов
/ 09 марта 2009

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

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

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

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

0 голосов
/ 09 марта 2009

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

Каковы ваши цели для этого?

...