请教各位关于c#Timer的问题(问题描述应该很详细了,代码很简单,结果很费解)!!!!!

问题描述

我做了一个小实验,在页面上,放了两个Updatepanel,每个里面分别放了一个label,用来显示当前的时间。又分别用两个timer来控制上面两个updatepanel的刷新频率。一个timer1的刷新频率为1秒,另一个timer2是10秒。timer1的tick事件里,就是更新label1的时间。timer2的tick事件里,更新label1和label2的时间,并且做了一个延迟操作,这么做的意思,就是让timer2的tick操作花费一些时间。。运行。。。问题出现了。。。我的初衷是,两个timer各自单独刷新,不要互相影响。可是,现在,在timer2的tick事件处理时,貌似timer1的tick没有响应。。貌似这timer2在影响timer1?为什么呢?怎样才能让两个timer单独刷新???运行结果是,label2里的时间是每10秒刷新一次,正常。而label1里的时间,5秒内,正常一秒刷新一次,然后5秒内,定在那里不动。。。如下。。2011-6-1010:40:182011-6-1010:40:192011-6-1010:40:202011-6-1010:40:212011-6-1010:40:222011-6-1010:40:232011-6-1010:40:282011-6-1010:40:292011-6-1010:40:302011-6-1010:40:312011-6-1010:40:322011-6-1010:40:332011-6-1010:40:38代码如下。。前台:<asp:ScriptManagerid="scriptManager1"runat="server"></asp:ScriptManager><asp:UpdatePanelID="up1"runat="server"UpdateMode="Conditional"><Triggers><asp:AsyncPostBackTriggerControlID="timer1"EventName="Tick"/></Triggers><ContentTemplate><asp:LabelID="l1"runat="server"></asp:Label></ContentTemplate></asp:UpdatePanel><asp:TimerID="timer1"runat="server"Interval="1000"ontick="timer1_Tick"></asp:Timer><asp:UpdatePanelID="up2"runat="server"UpdateMode="Conditional"><Triggers><asp:AsyncPostBackTriggerControlID="timer2"EventName="Tick"/></Triggers><ContentTemplate><asp:LabelID="l2"runat="server"></asp:Label></ContentTemplate></asp:UpdatePanel><asp:TimerID="timer2"runat="server"Interval="10000"ontick="timer2_Tick"></asp:Timer>后台:protectedvoidPage_Load(objectsender,EventArgse){scriptManager1.RegisterAsyncPostBackControl(timer2);l1.Text=DateTime.Now.ToLocalTime().ToString();l2.Text=DateTime.Now.ToLocalTime().ToString();}protectedvoidtimer1_Tick(objectsender,EventArgse){l1.Text=DateTime.Now.ToLocalTime().ToString();}protectedvoidtimer2_Tick(objectsender,EventArgse){l1.Text=DateTime.Now.ToLocalTime().ToString();l2.Text=DateTime.Now.ToLocalTime().ToString();for(inti=0;i<100000000;i++){;}for(inti=0;i<100000000;i++){;}for(inti=0;i<100000000;i++){;}for(inti=0;i<100000000;i++){;}for(inti=0;i<100000000;i++){;}for(inti=0;i<100000000;i++){;}for(inti=0;i<100000000;i++){;}for(inti=0;i<100000000;i++){;}for(inti=0;i<100000000;i++){;}for(inti=0;i<100000000;i++){;}}

解决方案

解决方案二:
记住,timer不是线程,搞清楚
解决方案三:
麻烦说相信点。。。如果我希望在一个页面有两个区域分别以不同的刷新频率更新,这个问题怎么解决呢?
解决方案四:
引用1楼bdmh的回复:

记住,timer不是线程,搞清楚

是啊得记住你懂得。
解决方案五:
就算你放10个Timer控件,运行时在浏览器上也就是这一个页面。这是web的基本机制。当有一个Timer到期,浏览器访问服务器,然后等待服务器返回(对于UpdatePanel来说就是等待返回部分html片段以及其它信息)。这个时间,浏览器“呆”在那里什么也不干,更不是在运行timer。
解决方案六:
如果需要真正的异步回调,自己使用轻量级的ajax来写异步回调服务器,不要使用Timer控件。这样其实就不是通过页面的Form的Submit提交,也就不会阻塞。但是这应该是访问服务器端最ashx、asmx等等与页面无关的,轻量级的ajax根本不会像UpdatePanel那样去维护控件状态。
解决方案七:
学习了

时间: 2024-09-14 06:13:37

请教各位关于c#Timer的问题(问题描述应该很详细了,代码很简单,结果很费解)!!!!!的相关文章

请教关于使用支付宝开放平台(API)遇到的问题。【附代码】急。。。

问题描述 需求:想通过开放平台提供的"alipay.user.trade.search"来查询帐户的交易记录.按支付宝开放平台的文档介绍,要实现站外读取支付宝帐户交易记录,需要做的步骤如下:1.需要用户授权,2.授权后得到auth_code,3.再凭auth_code换取access_token及用户userId,4.最后通过获取到的access_token值通过alipay.user.trade.search接口来读取帐户的交易记录现在已经做到第3步,获取到了access_token

小弟向各位朋友请教如何将DataTable中的数值转换后插入数据库,急求代码,谢谢[:)]

问题描述 小弟麻烦各位朋友帮我解答这个总提交问题,通过一个循环遍历当前DATATABLE中所有的DATAROW,判断当前DATATABLE中的DATAROW是否为新增,若是新增行的话将其插入数据库表格Table1中,现在我的问题还是出在SQL查询字符串上,每次执行INSERTINTO操作系统总是报错,菜鸟小弟已经好几天通宵了,苦不堪言!!向各位朋友们请教了,最好能给我个能用的SQL查询字符串,VB.NET的,多谢!!!!小弟单位里用老版本的VS2003,语言是VB.NET,数据库是免费版本的SQ

以前的VC++程序,想做网络版

问题描述 已经有单机版的代码,是否做网络版很麻烦,请过来人帮助提个可行的方案.选用VC++,调试环境的配置等,我没做过,请教一下. 解决方案 解决方案二:建议用B/S架构一步到位.学习一下gSOAP解决方案三:谢谢回复!解决方案四:没有更好的方案?解决方案五:该回复于2011-10-18 09:25:41被版主删除解决方案六:升级到CLR代码,再用.NET类库来写网络部分.解决方案七:可以使用网络层的转发实现单机向联网软件的转变.而不用修改程序本身.相信很多玩游戏的人都知道一个叫浩方的平台,就是

一个关于timer的问题

问题描述 我用如下java代码实现定时执行任务的功能Timertimer=newTimer()TimerTasktask1=newTimerTask();TimerTasktask2=newTimerTask();TimerTasktask3=newTimerTask();timer.shedule(task1,3*1000,30*1000);timer.shedule(task2,4*1000,30*1000);timer.shedule(task3,5*1000,30*1000);我想请教:

请教百度搜索关键词的编码方式和解码方式

问题描述 请教百度搜索关键词的编码方式和解码方式 比如下面的百度搜索页面地址http://m.baidu.com/s?tn=zbios&pu=sz%401320_480%2Ccuid%40504E73B9ED15B686C2F741B0F64B6AD4D9B2E8729FGKQMOLKRM%2Ccua%40640_1136_iphone_6.2.1.0_0%2Ccut%40iPhone6%252C1_8.1.2%2Cosname%40baiduboxapp%2Cctv%401%2Ccfrom%4

jstl循环问题-请教关于jstl标签循环的问题!直接上图,比较直观!

问题描述 请教关于jstl标签循环的问题!直接上图,比较直观! 想请教下这个三行作为一个整体进行循环,要怎么做啊,想了很久没想出来,请专家帮忙解答!

linux-怎么查看软件的代码?小白请教各位!感谢!!!

问题描述 怎么查看软件的代码?小白请教各位!感谢!!! 比如已知a软件是一款用于b任务的轻便软件.在linux上一条命令,调用软件,给待处理数据,给参数,然后就能运行.但是我怎么知道a软件的代码?我很外行,但就是想看一看该软件的代码,是不是这种想法是不对的,它们不会被公布?但这个软件是在网上可以免费下的呀 解决方案 如果软件是开源的,那么就可以找到代码.一般对于图形界面的程序,在帮助-关于中有程序的版权信息,可以看到,像gnu gpl等都是开源的. 对于命令行程序,一般是输入-help -abo

服务器-请教Apache同时并发原理的详解

问题描述 请教Apache同时并发原理的详解 想问问各位大虾: 本人刚学服务器,想了解一下apache的同时并发原理. 个人理解如下 比如说服务器是每1s接受一次访问,假定一个request的处理时间是1ms,那么在这一秒里面最大并发是1000. 如果超过1000的访问就会等待,导致request处理时间延长. 以上是个人理解,如有错误烦请指出,希望能听听各位的意见. 谢谢 解决方案 如果服务器有1个cpu,那么是这样的.但是如果有多个,并发不能这么算.apache会开多个线程,并行处理这些请求

任务调度(四)——ScheduledExecutorService替代Timer,实现多线程任务调度

       上篇博文<任务调度(三)--Timer的替代品ScheduledExecutorService简介>已经对ScheduledExecutorService做了简单介绍,其实使用ScheduledExecutorService来替代Timer也是迫不得已的事情.主要原因如下: Timer不支持多线程,所有挂在Timer下的任务都是单线程的,任务只能串行执行,如果其中一个任务执行时间过长,会影响到其他任务的执行,然后就可能会有各种接踵而来的问题. Timer的线程不捕获异常,Time