是否可以创建一个可以存储 DataSet() 的应用程序状态?我想创建可供任何用户使用的 DataSet 变量。我怎样才能做到这一点?
谢谢!
是否可以创建一个可以存储 DataSet() 的应用程序状态?我想创建可供任何用户使用的 DataSet 变量。我怎样才能做到这一点?
谢谢!
这只是一个设置问题
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 存储在应用程序变量中?
Application["YourDataSet"] = YourDataSetVariable.
根据您的其他评论,最好将其存储在 Session 变量中,因为您似乎将继续更新信息。