使用Timer导致按钮事件不能触发

xu_diligent 2012-12-18 04:08:22
各位大虾,麻烦帮忙看看,我在页面中使用Timer控件,间隔时间设置为300ms,比较短,所以点击按钮时,根本不会触发按钮里的事件,貌似此时的页面只能被Timer控制着,不能让我同事点击按钮事件。在aspx页面中,我用到了:
<asp:UpdatePanel runat="server" ID="UpdatePanel3" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="tReceive" EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:Timer ID="tReceive" runat="server" Interval="300" OnTick="tReceive_Tick" Enabled="false">
</asp:Timer>
</ContentTemplate>
</asp:UpdatePanel>

不知道各位大虾有没有什么好的办法,既能让我用timer,又能点击按钮

best wishes
...全文
195 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xu_diligent 2012-12-18
  • 打赏
  • 举报
回复
引用 6 楼 nice_fish 的回复:
Js里面有一个setInterval方法 http://baike.baidu.com/view/2264133.htm 假定你使用的是ajax,你可以定时的去执行这个ajax方法来获取数据。
ajax进行socket通讯?大虾们有没有参考案例呢,劳烦发个链接
xu_diligent 2012-12-18
  • 打赏
  • 举报
回复
是web的呀
瑞卡哥哥 2012-12-18
  • 打赏
  • 举报
回复
客户端应该不是web的吧
  • 打赏
  • 举报
回复
Js里面有一个setInterval方法 http://baike.baidu.com/view/2264133.htm 假定你使用的是ajax,你可以定时的去执行这个ajax方法来获取数据。
zhuochao88 2012-12-18
  • 打赏
  • 举报
回复
用线程循环读取while(true)死循环读取中间设置线程停顿这样比较好点
xu_diligent 2012-12-18
  • 打赏
  • 举报
回复
引用 3 楼 zhouqinghe24 的回复:
最好是不要用控件 用js 和后台控制比较好
能不能说的具体点呢,之前都没有用过socket
瑞卡哥哥 2012-12-18
  • 打赏
  • 举报
回复
最好是不要用控件 用js 和后台控制比较好
xu_diligent 2012-12-18
  • 打赏
  • 举报
回复
我用timer来做socket的客户端,接收服务端发过来的消息,用js应该不行,本来是想用线程,可是线程也没用到,用线程时,接到了信息,不会提示给我,所以纠结,这是我的客户端代码,各位大虾有空的话,可以帮我优化优化: #region //判断客户端socket是否为空 if (clientSocket == null) { } else { receiveCount++; //判断是否已经和服务端进行了连接 if (clientSocket.Connected) { try { //通过clientSocket接收数据 int receiveNumber = clientSocket.Receive(receiveResult); sbResult.Append(Encoding.ASCII.GetString(receiveResult, 0, receiveNumber)); if (sbResult.ToString() != "") { //获取文本长度 int sbResultLength = sbResult.ToString().Length; if (sbResultLength == 2) { if (sbResult.ToString() == "06") { ScriptManager.RegisterStartupScript(this, this.GetType(), "main", "receiveSuccess()", true); sbResult.Remove(0, sbResult.Length); } else if (sbResult.ToString() == "05") { ScriptManager.RegisterStartupScript(this, this.GetType(), "main", "receiveFailed()", true); sbResult.Remove(0, sbResult.Length); } else { ScriptManager.RegisterStartupScript(this, this.GetType(), "main", "receiveFailedNotice('" + sbResult.ToString() + "')", true); sbResult.Remove(0, sbResult.Length); } } else if (sbResultLength == 16) { //判断是否执行完上一条指令 if (sbResult.ToString() == plcFinishedResult) { ScriptManager.RegisterStartupScript(this, this.GetType(), "main", "receiveFinished()", true); sbResult.Remove(0, sbResult.Length); } else { ScriptManager.RegisterStartupScript(this, this.GetType(), "main", "receiveFailedNotice('" + sbResult.ToString() + "')", true); sbResult.Remove(0, sbResult.Length); } } else if (sbResultLength > 16) { ScriptManager.RegisterStartupScript(this, this.GetType(), "main", "receiveFailedNotice('" + sbResult.ToString() + "')", true); sbResult.Remove(0, sbResult.Length); } else { } } } catch { clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); } } } #endregion
bdmh 2012-12-18
  • 打赏
  • 举报
回复
这俩本身也没冲突啊,估计你是引起页面的重新加载,导致你控制不好,你用timer干嘛,是否可以改用javascript的定时,后台执行

62,039

社区成员

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

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

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

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