asp.net使用Timer的问题

hlj497452710 2014-05-25 03:05:27
我只需要在一个页面上做计时器,其中代码如下:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Timer t = new Timer(1000);
t.Elapsed += new ElapsedEventHandler(this.TimerEventFunction);
t.AutoReset = true;
t.Enabled = true;
}
}

protected void TimerEventFunction(Object sender, ElapsedEventArgs e)
{
//Console.WriteLine(e.SignalTime.ToString());
lbTime.Text = e.SignalTime.ToString();
}


为何页面什么也没显示出来呢?求了解的帮忙解答下。谢谢!
...全文
2008 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 hlj497452710 的回复:
[quote=引用 1 楼 caozhy 的回复:] 需要在客户端上使用js的定时器才行。
现在使用了js的计时器,但是我按某个按钮时,定时器又重新开始几时,怎么样才能在我按按钮时让定时器不刷新呢?求帮忙答疑一下!谢谢![/quote] 你的页面在交互中是以“一遍遍刷新”方式来设计的。如果你盲目抄别人的代码,别人告诉你如何在页面刷新时“让定时器不刷新”了么?上面除了 #16 楼理解了你的意思,其它的回复就算是告诉你“不要用wbform控件啦”的也是没有理解你到底问什么。 不管是用 webform,还是拿“纯javascript编程”说事儿,要在你不断要执行asp.net端代码来编辑复杂页面界面时的提交动作时处理好定时,都应该先搞懂深入一点的原因。因此虽然 #16 楼的回复使用了 asp.net 服务器端控件,但是最起码地只有他看明白了该如何设计这个定时器的内部机制,只不过是他选择回复你的是使用服务器端控件的设计方式而不是有些人喜欢忽悠的“纯javascript方式”。 我们编程设计,一定会选择“纯javascript方式”,这个没错。但是不懂这个定时器设计机制的人,在不使用 webform 控件时大概也还是不懂这个定时机制如何设计,不懂用户在编辑复杂页面时如何跨页面刷新来显示定时器计时。这些人尚且如此,你现在既然没有可能有时间去深入学习还能有希望能学会?浅浅地随便套用一下,你是学不会的了。 所以放到半年、一年以后再说吧。把这个功能需求修改为其它类似、但不需要技术含量的功能!
  • 打赏
  • 举报
回复
引用 4 楼 hlj497452710 的回复:
[quote=引用 3 楼 caozhy 的回复:] 不要使用服务器控件的按钮,而是使用客户端控件的按钮,用ajax提交来执行服务器操作。避免页面回发和刷新。
现在时间比较紧,我的页面还有很多服务器控件,很多是数据绑定的,不可能重新去做了,因为时间来不及,您有没有别的方法呢?[/quote] 知道自己不行,就先放弃。等你下一次有机会做点开发——半年以后再问。
qq_26808363 2016-07-01
  • 打赏
  • 举报
回复
你的timer是局部变量啊 大哥,执行完page_load就释放了,怎么能成功,要使用请到设计页面 工具箱 ajax extentions 中选择 Timer 添加 别忘了加上ScriptManager
ydxt_1668725251 2014-07-01
  • 打赏
  • 举报
回复
使用Timer制作计时器 private void button1_Click(object sender, EventArgs e) { DateTime get_time1 = DateTime.Now;//得到系统当前时间 DateTime sta_ontime1 = Convert.ToDateTime(//获取定时信息 Convert.ToDateTime(textBox2.Text.Trim().ToString())); long dat = DateAndTime.DateDiff(//计算两个时间间隔的秒数 "s", get_time1, sta_ontime1, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays); if (dat > 0)//如果时间间隔大于0秒 { if (timer2.Enabled != true) { timer2.Enabled = true;//开始计时 label4.Text = "闹钟已启动";//显示操作信息 label1.Text = "剩余" + dat.ToString() + "秒";//显示剩余时间 } else { MessageBox.Show(//弹出消息对话框CodeGo.net/ "时钟已经启动,请取消后,在启动"); } } else { long hour = 24 * 3600 + dat;//计算到下一天的这个时间的秒数 timer2.Enabled = true;//开始计时 label4.Text = "闹钟已启动";//显示操作信息 label1.Text = "乘余" + hour.ToString() + "秒";//显示剩余时间 } }
我现在在路上 2014-06-23
  • 打赏
  • 举报
回复
引用 4 楼 hlj497452710 的回复:
[quote=引用 3 楼 caozhy 的回复:] 不要使用服务器控件的按钮,而是使用客户端控件的按钮,用ajax提交来执行服务器操作。避免页面回发和刷新。
现在时间比较紧,我的页面还有很多服务器控件,很多是数据绑定的,不可能重新去做了,因为时间来不及,您有没有别的方法呢?[/quote] 你可以把计时器的状态在要刷新页面的时候发送到服务器,然后在取回来。暂时用下
boqu_2625328407 2014-06-23
  • 打赏
  • 举报
回复
获取当前日期吗? 设置Label插件 <asp:Label ID="LblDateandtime" runat="server" Font-Bold="True" ForeColor="#C04000" Text="Label" Width="314px"></asp:Label> 处理加载 protected void Page_Load(object sender, EventArgs e) { this.LblDateandtime.Text = "系统当前时间为:" + DateTime.Now.ToString(); }
itliyi 2014-06-23
  • 打赏
  • 举报
回复

<script type="text/javascript">
function startTime()
{
var today=new Date()
var h=today.getHours()
var m=today.getMinutes()
var s=today.getSeconds()
// add a zero in front of numbers<10
m=checkTime(m)
s=checkTime(s)
document.getElementById('<% = txt.ClientID%>').value=h+":"+m+":"+s
t=setTimeout('startTime()',500)
}

function checkTime(i)
{
if (i<10) 
  {i="0" + i}
  return i
}
</script>

<body onload="startTime()">
<asp:TextBox id="lbTime" id="txt" runat="server"></asp:TextBox>
</body>
fcylovehbb 2014-05-28
  • 打赏
  • 举报
回复
直接页面js setinterval() ,再弄个变量count ++当计时器 多简单个事
qwertxp 2014-05-27
  • 打赏
  • 举报
回复
控件害人啊,不要再玩webform这一套玩意了,不会有进步的。
czhsoftware 2014-05-27
  • 打赏
  • 举报
回复
protected void Timer1_Tick(object sender, EventArgs e) { this.TimeLabel.Text = DateTime.Now.ToString(); } 应该使用Tick方法。
rmb147 2014-05-27
  • 打赏
  • 举报
回复
用js 的SetTimeOut() 服务器端不要用了,性能太差了
hlj497452710 2014-05-26
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
不要使用服务器控件的按钮,而是使用客户端控件的按钮,用ajax提交来执行服务器操作。避免页面回发和刷新。
现在时间比较紧,我的页面还有很多服务器控件,很多是数据绑定的,不可能重新去做了,因为时间来不及,您有没有别的方法呢?
二当家 2014-05-26
  • 打赏
  • 举报
回复
出了pageload time对象 都释放了。。
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
不要使用服务器控件的按钮,而是使用客户端控件的按钮,用ajax提交来执行服务器操作。避免页面回发和刷新。
+1
黑子大哥 2014-05-26
  • 打赏
  • 举报
回复
可以使用updateplan,微软那个自带的ajax控件,后台的timer可以刷新前台,很久没用了,1年前我实现过,应该是可以的,不过有一个问题,timer开启之后就无法关闭,永久执行,这个比较蛋疼
刘小安 2014-05-26
  • 打赏
  • 举报
回复
页面只能ajax才行。服务器控件是不行的哟。重复数据的发生与请求。
jimil 2014-05-26
  • 打赏
  • 举报
回复
你用timer来现实对客户端的控制,说明你对web运行的原理完全不知道,即客户请求——服务器响应——返回HTML致客户端,你的timer在服务器运行,请问,怎么控制客户端?断开式连接是web的基础。 AJAX的原理也是这样,只不过是模拟了客户请求,而服务器端的呈现则通过参数,所以,你要的功能,只能通过AJAX实现,当然,activex不在计算内。
myhope88 2014-05-26
  • 打赏
  • 举报
回复
这个是在服务端运行,客户端当然显示不出来了,用js+ajax吧
threenewbee 2014-05-25
  • 打赏
  • 举报
回复
不要使用服务器控件的按钮,而是使用客户端控件的按钮,用ajax提交来执行服务器操作。避免页面回发和刷新。
hlj497452710 2014-05-25
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
需要在客户端上使用js的定时器才行。
现在使用了js的计时器,但是我按某个按钮时,定时器又重新开始几时,怎么样才能在我按按钮时让定时器不刷新呢?求帮忙答疑一下!谢谢!
加载更多回复(1)

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧