高分求——关于web定时提醒的问题,不够再加分!

时间:2022-08-31 21:00:39
比如考试:
    8:00开始,时间为1个小时。到9点结束。程序在8:55的时候提醒考生时间,怎么实现啊 。
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
this.timer1.Interval=1000*60;
this.timer1.AutoReset=true;
this.timer1.Enabled=true;
}
}

private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Response.Write("<script>alert('时间到!');</script>");
}
我写的哪里出问题了啊,怎么就不行呢~?

13 个解决方案

#1


你不要期望能从服务器端主动向客户端发送内容。服务器与客户端在请求完成后是断开的。

你可以在客户端用js来做定时器

#2


1.倒计定时器:timename=setTimeout("function();",delaytime); 

2.循环定时器:timename=setInterval("function();",delaytime); 

#3


你的写法没有程序来触发你的PAGE_LOAD(),正如孟子E章所说服务端不能来触发CLIENT,
有一个简单的方法,在HTML页面中写入
<META http-equiv="Refresh" content="10">这样实现定时刷新,就会调用你的Page_load()了,
但这种方法很耗资源,一旦页面出错,就卡了,慎用.

#4


pegtop(越来越像.Net专家)

让你这么一刷新。他们不是每十分钟就要重新做一次答题呀。呵呵
http://community.csdn.net/Expert/topic/4658/4658311.xml?temp=4.088992E-02
关注我的贴子哦。呵呵

#5


楼上的同志..
不要只受之以鱼,而不受之以渔.

LZ.看好了.

首先你要去知道B/S的结构,如孟子所说.B/S在请求过后是完全短开的.
HTTP是基于非连接的.
他的请求规则是..你发一个请求,他就受理一个,他并不能主动地去想客户端发送.
处理完后所有的内容都会到客户端.断开.
所以你要完成此功能的前提是,你要懂得怎么用客户端的脚本代码来定时自动的发送请求.

办法是 JAVASCRIPT + XMLhttp .这样可以做到不用刷新的请求.

但是基于你的功能我个人觉得不用这么干.

用javascript可以实现.

具体方法楼上的都贴出来了

#6


楼上说的对



====CSDN 小助手 V2.5 2005年11月05日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
下载:http://szlawbook.com/csdnv2

#7


要利用客户端~

#8


如果你懂javascript,setTimeout是最基本的解决方案,每次Postback的时候就计算Postback时间和Alert时间的距离,然后用setTimeout设置Alert时间。下一次Postback如果没到Alert,Alert就会消失掉,所以每次页面都要重新setTimeout。(注意这里的Alert指“提醒”,不是script里的window.alert)

如果你想把Alert功能做好,做到能够复用,例如一个页面有多个Alert,那就最好把这个功能封装为控件,在页面除了通过setTimeout设置Alert时间,还把Alert的时间写到ViewState,每次页面Postback后自动恢复这个Alert。

如果你想没事找事干,还有很多“天才”做法,例如用XMLHttpRequest每隔一段时间就去和服务器同步一下时间,甚至用现在所谓的Comet方式让服务器主动Push一个Alert事件给客户端。(所谓Comet就是用XMLHttpRequest和服务器保持一个长连接,详细可以看dojo框架。)

需要注意的是,你能实现的仅仅是提醒功能,但是你不能确保客户端一定要执行,这就是HTTP不可靠性的表现。上次有人提问如何强迫到时间客户端就交卷,这是做不到的,这种情况只能设置服务器端过了交卷时间就不再收卷。

#9


mark

#10


ajax + session + js


#11


net_lover(孟子E章)  成了钻石王老五了...

#12


B/S的结构,如孟子所说.B/S在请求过后是完全短开的.
HTTP是基于非连接的.
他的请求规则是..你发一个请求,他就受理一个,他并不能主动地去想客户端发送.
处理完后所有的内容都会到客户端.断开.
所以你要完成此功能的前提是,你要懂得怎么用客户端的脚本代码来定时自动的发送请求.

办法是 JAVASCRIPT + XMLhttp .这样可以做到不用刷新的请求.

对于你的功能用javascript也可以实现.

1.倒计定时器:timename=setTimeout("function();",delaytime); 

2.循环定时器:timename=setInterval("function();",delaytime);

#13


我个人认为如果对时间要求比较严格的话,是需要在服务端设置一个计时器,然后用ajax来获取刷新的服务器端,我以前做个一个项目,测试的时候客户端由于刚开始载入的时间不同,计时器触发的时间也有一些差别.而这一个timeer需要设置到程序的全局类globle.asax里面.

#1


你不要期望能从服务器端主动向客户端发送内容。服务器与客户端在请求完成后是断开的。

你可以在客户端用js来做定时器

#2


1.倒计定时器:timename=setTimeout("function();",delaytime); 

2.循环定时器:timename=setInterval("function();",delaytime); 

#3


你的写法没有程序来触发你的PAGE_LOAD(),正如孟子E章所说服务端不能来触发CLIENT,
有一个简单的方法,在HTML页面中写入
<META http-equiv="Refresh" content="10">这样实现定时刷新,就会调用你的Page_load()了,
但这种方法很耗资源,一旦页面出错,就卡了,慎用.

#4


pegtop(越来越像.Net专家)

让你这么一刷新。他们不是每十分钟就要重新做一次答题呀。呵呵
http://community.csdn.net/Expert/topic/4658/4658311.xml?temp=4.088992E-02
关注我的贴子哦。呵呵

#5


楼上的同志..
不要只受之以鱼,而不受之以渔.

LZ.看好了.

首先你要去知道B/S的结构,如孟子所说.B/S在请求过后是完全短开的.
HTTP是基于非连接的.
他的请求规则是..你发一个请求,他就受理一个,他并不能主动地去想客户端发送.
处理完后所有的内容都会到客户端.断开.
所以你要完成此功能的前提是,你要懂得怎么用客户端的脚本代码来定时自动的发送请求.

办法是 JAVASCRIPT + XMLhttp .这样可以做到不用刷新的请求.

但是基于你的功能我个人觉得不用这么干.

用javascript可以实现.

具体方法楼上的都贴出来了

#6


楼上说的对



====CSDN 小助手 V2.5 2005年11月05日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
下载:http://szlawbook.com/csdnv2

#7


要利用客户端~

#8


如果你懂javascript,setTimeout是最基本的解决方案,每次Postback的时候就计算Postback时间和Alert时间的距离,然后用setTimeout设置Alert时间。下一次Postback如果没到Alert,Alert就会消失掉,所以每次页面都要重新setTimeout。(注意这里的Alert指“提醒”,不是script里的window.alert)

如果你想把Alert功能做好,做到能够复用,例如一个页面有多个Alert,那就最好把这个功能封装为控件,在页面除了通过setTimeout设置Alert时间,还把Alert的时间写到ViewState,每次页面Postback后自动恢复这个Alert。

如果你想没事找事干,还有很多“天才”做法,例如用XMLHttpRequest每隔一段时间就去和服务器同步一下时间,甚至用现在所谓的Comet方式让服务器主动Push一个Alert事件给客户端。(所谓Comet就是用XMLHttpRequest和服务器保持一个长连接,详细可以看dojo框架。)

需要注意的是,你能实现的仅仅是提醒功能,但是你不能确保客户端一定要执行,这就是HTTP不可靠性的表现。上次有人提问如何强迫到时间客户端就交卷,这是做不到的,这种情况只能设置服务器端过了交卷时间就不再收卷。

#9


mark

#10


ajax + session + js


#11


net_lover(孟子E章)  成了钻石王老五了...

#12


B/S的结构,如孟子所说.B/S在请求过后是完全短开的.
HTTP是基于非连接的.
他的请求规则是..你发一个请求,他就受理一个,他并不能主动地去想客户端发送.
处理完后所有的内容都会到客户端.断开.
所以你要完成此功能的前提是,你要懂得怎么用客户端的脚本代码来定时自动的发送请求.

办法是 JAVASCRIPT + XMLhttp .这样可以做到不用刷新的请求.

对于你的功能用javascript也可以实现.

1.倒计定时器:timename=setTimeout("function();",delaytime); 

2.循环定时器:timename=setInterval("function();",delaytime);

#13


我个人认为如果对时间要求比较严格的话,是需要在服务端设置一个计时器,然后用ajax来获取刷新的服务器端,我以前做个一个项目,测试的时候客户端由于刚开始载入的时间不同,计时器触发的时间也有一些差别.而这一个timeer需要设置到程序的全局类globle.asax里面.