如何定义一个全局数组? 我想定义一个全局数组,能在所有aspx页面中进行修改和应用。比如建立string aa[]这个数组,每成功登陆一个用户就往aa[]里增加一个记录,退出一个用户则删除一条记录,请问如何实现 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class SingletionList { private static SingletionList singleton; private System.Collections.ArrayList list = new System.Collections.ArrayList(); protected SingletionList() { } public static System.Collections.ArrayList GetList() { if (singleton == null) { lock (new object()) { if (singleton == null) { singleton = new SingletionList(); } } } return singleton.list; } }调用:public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ArrayList list = SingletionList.GetList(); list.Add("aaa"); } } protected void Button1_Click(object sender, EventArgs e) { ArrayList list = SingletionList.GetList(); this.Label1.Text = list[0].ToString(); }} 是在global.asa 的Application_Start事件里这样定义吗?string[] user;在aspx页面里如何使用这个数组呢? 我写的那段代码就是用单件模式写的可以全局访问的ArrayList. 因为string[]在new的时候是要固定长度的,所以用ArrayList.global.asa里面的Session_Start只是当一个请求被发起时的事件,和搂主的需求是不同的。Application_Start是应用程序运行时触发的事件,就更没关系了。要么你用HttpApplicationState做,但对于你的需求我不是很推荐 可能我的表达有问题,其实我的需求是这样的,首先建立一个数组string[] user;然后每成功登陆一个用户后就要在user这个数组中存入一个值,比如ID,我一直要使用这个全局数组user,以便对所有在线用户进行随机抽取,公布中奖ID您所使用的那方式能保证吗? 不使用数据表就用Applocation级变量. 你这里需要的是登录后的用户的信息,需要看是如何记录哪些人在线。记录在线的登录用户可以使用Cache或者数据库。如果使用数据库保存登录用户,你的问题将不存在什么问题,根据登录用户的总数生成一个随机数。如果使用Cache,我想应该可以这样设计:首先分两个状态,登录和注销,需要注意的是B/S中是无状态的,你不知道用户什么时候会向服务器发出请求,表示他在线,现在好的解决方案就是ajax从浏览器上定时向服务器发出请求,表示登录用户尚在。登录后:可以定义一个Hashtable,用户登录后,增加一条信息,并保存这个Hashtable到Cache中,主动注销或者直接关闭浏览器再从这个Hashtable中删除相应的信息。 能,单间模式的本意就是全局唯一。随便你调用几次SingletionList.GetList(); 获取的ArrayList都是同一个ArrayList所以我在调用的时候一次是在isPostBack中,这只有在首次请求中执行,而在Button_Click中再次调用,注意,Button_Click的代码是回发后的,显示的还是同一个ArrayList根据你的需求,你可以在登陆方法中SingletionList.GetList().Add(用户对象);然后在抽奖的时候在随机从SingletionList.GetList()中取出一个用户对象。你可以一试. 我试下楼上的方法,请问下SingletionList类是放在.cs里吗?后面的代码就是aspx中的应用? 结帐结帐了,多谢各位拉jeremyyang824的方法可行 SingletionList类 放在cs文件里面。后面的代码只是随便调用了给你看看的,主要是SingletionList类 请问一下jeremyyang824,SingletionList类的实例会不会被回收掉? 关于远程连接数据库的问题 请教datagridview的多行选中问题 关于绑定数据到 DataList 的方法 请问用Codesmith能获取表的主键吗? System.Net.WebException:无法连接到远程服务器--------System.Net.Sockets.SocketException: asp怎么判断客户浏览器是否支持script 急,关于WEB.CONFIG的问题. postsharp VS2010找不到引用,急 类,高手请进! asp:treeview 问题 ASP.NET程序的运行问题 我想到美国拿高薪!
public class SingletionList
{
private static SingletionList singleton;
private System.Collections.ArrayList list = new System.Collections.ArrayList(); protected SingletionList()
{ } public static System.Collections.ArrayList GetList()
{
if (singleton == null)
{
lock (new object())
{
if (singleton == null)
{
singleton = new SingletionList();
}
}
}
return singleton.list;
}
}
调用:public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ArrayList list = SingletionList.GetList();
list.Add("aaa");
}
}
protected void Button1_Click(object sender, EventArgs e)
{
ArrayList list = SingletionList.GetList();
this.Label1.Text = list[0].ToString();
}
}
在aspx页面里如何使用这个数组呢?
global.asa里面的Session_Start只是当一个请求被发起时的事件,和搂主的需求是不同的。Application_Start是应用程序运行时触发的事件,就更没关系了。
要么你用HttpApplicationState做,但对于你的需求我不是很推荐
然后每成功登陆一个用户后就要在user这个数组中存入一个值,比如ID,我一直要使用这个全局数组user,以便对所有在线用户进行随机抽取,公布中奖ID您所使用的那方式能保证吗?
如果使用Cache,我想应该可以这样设计:首先分两个状态,登录和注销,需要注意的是B/S中是无状态的,你不知道用户什么时候会向服务器发出请求,表示他在线,现在好的解决方案就是
ajax从浏览器上定时向服务器发出请求,表示登录用户尚在。登录后:可以定义一个Hashtable,用户登录后,增加一条信息,并保存这个Hashtable到Cache中,主动注销或者直接关闭浏览器再从这个Hashtable中删除相应的信息。
随便你调用几次SingletionList.GetList(); 获取的ArrayList都是同一个ArrayList所以我在调用的时候一次是在isPostBack中,这只有在首次请求中执行,
而在Button_Click中再次调用,注意,Button_Click的代码是回发后的,显示的还是同一个ArrayList根据你的需求,你可以在登陆方法中SingletionList.GetList().Add(用户对象);
然后在抽奖的时候在随机从SingletionList.GetList()中取出一个用户对象。
你可以一试.
后面的代码就是aspx中的应用?
jeremyyang824的方法可行
后面的代码只是随便调用了给你看看的,主要是SingletionList类