请大家侃侃:
我用两种方式写:
(1)
protected void Page_Load(object sender, EventArgs e)
{
System.Timers.Timer time = new System.Timers.Timer();
time.AutoReset = true;
time.Enabled = true;
time.Interval = 1000;
time.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
time.Start();
timer_Elapsed(null, null);///标记处
if (Session[ "neckname "] == null)
{
time.Stop();
}
}
下面是: protected void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)的函数体;
(2)方式,只是把一中的timer_Elapsed(null, null);(标记处)去掉了,其余的一样。
不知那一种是对的
问题:
1)若(1)对,但是只有当我人为的去刷新这个页面时,新的数据才会显示出来,否则不会,那么这与不用System.Timers.Timer没什么区别。
2)我看了一些例子,他们的Page_Load(),中是没有timer_Elapsed()的,但是当我去掉后,页面上什么也没有,这有是为什么!
------解决方案--------------------------------------------------------
b/s结构的程序只能是客户端请求服务器才会有服务器向客户端发送数据的。
服务器不知道连接它的客户端是谁
------解决方案--------------------------------------------------------
如果你想要一加载页面,timer就起作用,执行timer_Elapsed的话,是需要写timer_Elapsed方法的。如果你是想要条件性的执行的话,比如说,点击一个按钮才执行,那就该把timer_Elapsed放在按钮的click事件中触发,另外,真正的实现逻辑应该放在timer_Elapsed中实现