Как я могу хранить набор данных () в переменной приложения?
Можно ли создать состояние приложения, которое может хранить DataSet()? Я хочу создать переменную DataSet, которая может быть доступна для любого пользователя. Как я могу это сделать?
Спасибо!
2 ответа
Это просто вопрос настройки
if(Application["myGlobalDataset"] == null)
Application["myGlobalDataset"] = LoadMyDataSet();
Тем не менее, внимательно прочитайте MSDN (жирный шрифт мой)
Состояние приложения - это хранилище данных, которое доступно всем классам в приложении ASP.NET. Состояние приложения хранится в памяти на сервере и быстрее, чем хранение и извлечение информации в базе данных. В отличие от состояния сеанса, характерного для одного сеанса пользователя, состояние приложения применяется ко всем пользователям и сеансам. Таким образом, состояние приложения является полезным местом для хранения небольших объемов часто используемых данных, которые не изменяются от одного пользователя к другому.
Хорошее место для инициализации переменной находится в Application_Start
событие найдено в global.asax.cs
файл
void Application_Start(object sender, EventArgs e)
{
if(Application["myGlobalDataset"] == null)
Application["myGlobalDataset"] = LoadMyDataSet();
}
и не забудьте уничтожить его в Application_End
событие
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
if(Application["myGlobalDataset"] != null)
Application["myGlobalDataset"].Dispose();
}
Если вы планируете изменить содержимое набора данных, имейте в виду, что вам нужно предотвратить одновременный доступ к переменной, и, следовательно, необходим механизм блокировки.
try
{
Application.Lock()
Dataset ds = Application["myGlobalDataset] as Dataset;
......
}
finally
{
Application.UnLock()
}
Блокировка сохраняется до тех пор, пока страница не завершит обработку или не истечет время ожидания, однако я все еще предпочитаю заключать все в блок try/finally
То есть вы просто хотите сохранить DataSet в переменной приложения?
Приложение ["YourDataSet"] = YourDataSetVariable.
Из ваших других комментариев, вероятно, лучше всего сохранить его в переменной Session, так как кажется, что вы будете продолжать обновлять информацию.