-1

我在 vb 中有一个简单的计时器方法,目前什么都不做,它只是滴答作响。但是,一旦这样做,我在页面上的所有其他代码都将停止工作。

例如,我的页面上有图像按钮,可将控件添加到静态占位符。

btnCreate.Text = "Create"
btnCreate.ID = "btnCreateSpecialNotes"
AddHandler btnCreate.Click, AddressOf btnCreateSpecialNotes_Click
plhCreateSpecialNotes.Controls.Add(btnCreate)

因此,如果没有 timer.tick 方法,它(以及不包括的其他代码)会按预期启动并执行我想要的操作,但是当 timer.tick 发生时,一切都会冻结并且没有任何效果。

我的计时器设置如下

<asp:Timer ID="specialNotesTimer" runat="server" Interval="2000" ontick="specialNotesTimer_Tick"></asp: Timer>

在后面的代码中......

Protected Sub specialNotesTimer_Tick(Byval sender as object, Byval e as eventArgs) Handles specialNotesTimer.Tick
'Do things to the page
End Sub
4

2 回答 2

2

免责声明:我从未使用过 System.Web.UI.Timer 类。

我认为客户端 javascript 代码和服务器端 C# 代码之间可能存在一些混淆。

阅读 MSDN 后,似乎 Timer 控件将每 2000 毫秒(因为您在上面这么说是 2 秒)启动一次完整的回发。这只能在 javascript 中完成,并且需要有一个服务器端事件处理程序来在服务器上执行一些任务(你称之为 specialNotesTimer_Tick)。

现在,如果这个任务的执行时间超过 2 秒,我会假设您永远不会在网页上看到任何信息,因为它会不断地回发(回发?)并刷新屏幕。

建议:

  1. 重新考虑使用计时器的方法
  2. 增加定时器间隔
  3. 添加一个 UpdatePanel 以便异步进行处理,从而避免屏幕刷新

希望这可以帮助。

于 2013-04-14T06:29:22.550 回答
-1

我认为我在这里遇到的主要问题是我的 html 流没有结束。我从头开始慢慢地重新启动我的页面,虽然我使用了几乎相同的代码,但我只是三次检查了所有关闭标签以及 html 中没有的内容,这似乎解决了问题本身。

很抱歉,没有更深入的答案,但我仍然不明白为什么我的旧代码在这里不起作用,但是从一开始重新做我的页面对我有用。

于 2013-04-17T16:21:03.480 回答