Я полагаю, что лучшие способы "переменной краткосрочной" устойчивости в приложении ASP.NET:

  1. Переменная сеансов (область сеанса)
  2. Переменная приложения (область применения)
  3. Просмотр страницы (область страницы)
  4. Настройки приложения (область применения)
  5. ???

Каковы наилучшие способы "переменной краткосрочной" стойкости в приложении Windows Form для:

  1. Область действия формы
  2. Область пользовательского сеанса
  3. Глобальная область применения

Благодарность

c#
2
Bhaskar 30 Июл 2009 в 15:46

5 ответов

Лучший ответ

Щелкните проект правой кнопкой мыши, выберите "Свойства" -> "Настройки". Вы можете редактировать постоянные поля (т. Е. Настройки), указав имя, тип и область действия (на уровне пользователя или приложения).

Вы можете получить к ним доступ из кода через .Properties.Settings.Default.

Настройки сохраняются между запусками приложения.

Вы должны использовать эти настройки и для области действия формы.

Все эти настройки имеют смысл для хранения постоянных значений между запусками приложения. Используйте обычные (статические) поля для хранения данных в одном экземпляре программы.

3
bohdan_trotsenko 30 Июл 2009 в 12:06

Что ж, для «Область действия формы» вы можете просто использовать поля или свойства. Для настроек приложения и настроек сеанса вы можете использовать (статический) класс или что-нибудь еще, что вам удобно.

Обратите внимание, что на самом деле нет разницы между приложением и сеансом в приложении WinForms, вы больше не на сервере.

3
Henk Holterman 30 Июл 2009 в 11:58

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

альтернативный текст http://img268.imageshack.us/img268/9186/projectsettings.png

1
Matt Warren 30 Июл 2009 в 12:05

Для переменных, доступных только в форме, я бы просто сделал их частными полями. В приложении win Forms нет такой вещи, как «сеанс», однако вы можете использовать CallContext для имитации сеанса, поскольку HttpContext и Session в веб-приложении основаны на этом классе.

Что-нибудь глобальное я бы, вероятно, сохранил в самом объекте Application или в файле конфигурации приложения.

0
James 30 Июл 2009 в 12:03

Я не совсем уверен, что вы хотите сохранить за пределами жизненного цикла объекта, но, как заявил Хенк, ваша форма имеет область действия в течение всего времени, в течение которого она загружается, и вы можете добавлять свойства в форму, которые могут быть инициализированы с помощью ваш код при создании экземпляра формы и будет длиться до выгрузки формы. Следующая область видимости - это действительно объект Application (если вы не оборачиваете формы в какой-либо пользовательский контейнерный класс), куда вы можете добавлять свойства для жизненного цикла приложения (и, по сути, объекта Application).

Чтобы сохраняться за пределами приложения, используйте класс Properties или сохраните данные в реестре (в надлежащим образом идентифицированном и названном месте).

Похоже, вы думаете несколько процедурно, и это немного похоже на постоянство глобальной переменной (или, по крайней мере, больше, чем у метода или объекта). Вместо того, чтобы думать в терминах переменных, думайте в терминах объектов и свойств этих объектов. Если вы правильно спроектировали свою объектную модель, то сохранение соответствующих свойств должно зависеть от этого.

0
Lazarus 30 Июл 2009 в 12:06