如何在Application变量中存储数据集()?

时间:2014-02-15 13:29:31

标签: c# asp.net class dataset application-state

是否可以创建一个可以存储DataSet()的应用程序状态? 我想创建可供任何用户使用的DataSet变量。我怎么能这样做?

谢谢!

2 个答案:

答案 0 :(得分:1)

这只是设置

的问题
 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块中

答案 1 :(得分:0)

所以你只想将DataSet存储在应用程序变量中?

Application [“YourDataSet”] = YourDataSetVariable。

根据您的其他评论,最好将其存储在Session变量中,因为您似乎不断更新信息。