0

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

谢谢!

4

2 回答 2

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 块中

于 2014-02-15T13:33:22.020 回答
0

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

Application["YourDataSet"] = YourDataSetVariable.

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

于 2014-02-15T13:33:10.727 回答