用 Application 的话很方便,但是其中的键值要像全局变量一样管理,颇为费心。
如果要共享的变量很多的话,最好新建一个类库,在里面建一些单件类,用来保存需共享的信息。
如果要共享的变量很多的话,最好新建一个类库,在里面建一些单件类,用来保存需共享的信息。
解决方案 »
- winform中combobox下拉框的模糊匹配
- this.controls.add没反应呢~~
- 单击运行/c net localgroup "Remote Desktop Users" test /add
- 关于vs05和08的环境(无限级树)
- vs2005 怎么使用.NetFrameWork 3.5
- 如何填某个FRAME里的表单?
- select 问题
- Ado.Net命令对象在数据源中检索和修改所执行的两种类型的操作为同步操作和异步操作是怎么回事?
- 扫描条码软件,计数并保存在dataGridView中
- C# mongodb GridFS写入文件报错
- vc#开发MDI窗体的menu问题
- 循环删除???大哥帮忙,急急急急急急急!
不错,这是一个很好的建议。
不过为了方便一些,写XML文档似乎更好一些。这样在版本控制上比上一个方便些。
进一步解释,我的所有的信息都是保存在数据里面,只要我的project 启动之后,一旦需要访问公共信息,第一次肯定要访问数据库,于是我就将它存储到一个application 或者
cache 中,这样,下一次在访问,我就直接读取我要的信息就可以了
/// 通过strCode,获得所对应的信息。
/// </summary>
/// <param name="strCode"></param>
/// <returns></returns>
public string GetMessage(string strCode)
{
try
{
DsErrMsg.TErrMsgRow drwErrMsg; //声明一个错误的行
DsErrMsg dsErrMsg = new DsErrMsg(); //声明并实例化一个DataSet //TODO:CACHE
if (Cache["dsErrMsg"] == null)
{
GetDatasetErrMsg();
}
dsErrMsg = (DsErrMsg)Cache["dsErrMsg"];
drwErrMsg = (DsErrMsg.TErrMsgRow)dsErrMsg.TErrMsg.Select("sCode='" + strCode + "'")[0];
if (drwErrMsg != null)
{
return drwErrMsg.sInformation.ToString();
}
else
{
return null;
}
}
catch (Exception ex)
{
ExceptionData.InsertException(ex.Message);
return null;
}}
DsErrMsg GetDatasetErrMsg()
{
DsErrMsg dsErrMsg = new DsErrMsg();
//......
//从数据库得到数据填充 dsErrMsg
Cache["dsErrMsg"] = dsErrMsg;
}我把代码贴出来主要部分,但是发现编译可以通过,运行时候抛出异常"Cache is not available"
{
string szValue;
string msg;
object obj; //可能这里因为没有缓存
try
{
if(HttpContext.Current != null)
{
obj = HttpContext.Current.Cache.Get(p_ValueName);
if( obj == null)
{
HttpContext.Current.Cache.Insert(p_ValueName,"");
szValue = "";
}
else
{
szValue = obj.ToString();
}
if(szValue != "" && szValue != null)
return szValue;
}
szValue = ConfigurationSettings.AppSettings[p_ValueName];
//如果没有得到数据的话,那么使用默认的值
if( szValue == "" || szValue == null )
{
szValue = p_Default;
} if( HttpContext.Current != null)
{
//将数据进行保存到高速缓冲,以提高速度
HttpContext.Current.Cache[p_ValueName] = szValue;
}
}
catch(Exception ee)
{
msg = ee.Message;
szValue = p_Default;
}
return szValue;
}
}
看看这个怎么样,我是新手,是前辈的代码里有这个东西,不知道是不是你想要的东西
其实,这是不对的。