日期:2014-05-18  浏览次数:20508 次

大家知道怎么在60分钟后调激发一个事件的发生吗?该写在那个事件中?

我想请教大家一个取时间的问题.
我的愿意是想在到达某个时间就调用某一事件.
所以当我点击开始时,就记录下现在的系统时间.string   time1   =   DataTime.Now();然后想再过60分钟就调用另一个按钮事件.
这样该怎么实现!谢谢

大家能讲讲吗?其实我有一点思路,就是在当我点击开始的时候就
DateTime   time1   =   DataTime.Now();
DateTime   time2   =   time   +   60;
if(time2   -   time1   <=0)
{
          //调用
}

但是应该不对,这个应该写在那个事件中,来控制60分钟时,来调用另一事件

------解决方案--------------------
用js定时读cookies吧,如果直接等60分钟感觉不太现实
------解决方案--------------------
有好多种方案
比如搞一个看不见的内框架,每1分钟悄悄刷新一次问主机到时间没有,如果时间到就通知主框架交卷.

也可以追追新潮,用AJAX.

不过你的主要难点倒不在一小时交卷上面,而是在如何保持客户端已做的答案,不至于刷新后又要重做.
------解决方案--------------------
本来要睡觉的,无意中看见你的回复,一时兴起,搞了个简单的纯客户端实现,你将就着看吧:

这是主文件: default.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns= "http://www.w3.org/1999/xhtml ">
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 " />
<title> 无标题文档 </title>
</head>

<body>
<script>
d1 = new Date();
d1 = d1.getTime();
d2 = d1 + 60000; //这里假设考试时间1分钟
function post()
{
alert( "时间到了,交卷! ");
}
</script>
这个内框架是
<iframe width= "0 " height= "0 " src= "ask.html "> </iframe>
看不见的 <br />

XXX考试题...
</body>
</html>


------解决方案--------------------
把每个用户的开始时间放在服务器端保存,放在全局缓存中
用户点击考试的时候,在缓存里取这个时间
然后根据这个时间,在js端生成定时器计时。
如果要能恢复用户的答案,那就利用xmlhttp或者iframe与后台进行数据交换(xml格式或者json格式都可以),定时间把答案保存起来,需要时恢复
我以前做的在线考试系统需求可多多了 赫
------解决方案--------------------
mark
------解决方案--------------------
用html的跳转功能 <meta http-equiv= "refresh " content= "3600;URL=nextPage.html ">
在页面上做一个计时器就ok了

------解决方案--------------------
为什么不能用js呢?我们做的考试系统就是用js+ajax实现,效果是时间快到提醒,到时自动交卷.

原理:
前台用后台的ajax方法头的一个方法,该方法取得试卷时间.刷新操作由js完成.

现在在家没有代码,明天发给你.可以告诉你js+ajax实现没有问题,而且效果还不错. 就算用户刷新的话,也不重新计时.
------解决方案--------------------
不知道解决了没有,给点代码参考一下:
前台:
<body onselectstart= "return false " onkeydown= "DisableKey() " oncontextmenu= "self.event.returnValue=false "
onload= "setTimeout( 'GetResidualExamPaperTime() ', 1000); ">


//


<script>
function GetResidualExamPaperTime()
{
var pubID=QueryString( 'pubid ');
document.getElementById( "lbl_LastTime ").innerHTML=ExamOnline.GetResidualExamPaperTime(pubID).value;

var tmpStr=document.getElementById( "lbl_LastTime ").innerHTML;

var minute=tmpStr.substr(0,tmpStr.indexOf( ': '));
var second=tmpStr.substr(tmpStr.indexOf( ': ')+1);
//
if(parseInt(minute) <0)
{
submitExam();
}
setTimeout( 'GetResidualExamPaperTime() ', 1000);