从System.timers.timer elapsed事件的后面代码更新UpdatePanel



是可能的,使用asp.net和vb.net作为背后的代码,更新一个UpdatePanel上的System.Timers.Timer经过的事件?我知道定时器控制是可用的,但是请帮我用system . timer . timer -我有理由这样使用它。

每次处理计时器流逝事件的子例程被调用时,我都有一个文本,我更新它的文本。在我更新文本之后,我调用UpdatePanel上的update()。什么也不会发生。我知道有很多方法可以在客户端使用Javascript做到这一点,但如果可能的话,我想远离它并留在服务器端,我觉得Ajax UpdatePanel正试图为我做什么。我觉得UpdatePanel应该做我所需要的,更新我的页面的一小部分,在这种情况下,我的文字是存储的。提前谢谢你。

这是我的部分标记:

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:Literal ID="timerLit" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>

这里是vb:

Protected Sub onTimerElapsed(source As Object, e As ElapsedEventArgs)
    timerLit.Text = "Hello"
    UpdatePanel1.update()
End Sub

我已经尝试了很多事情。我知道我的onTimerElapsed子例程被调用,并且我知道字面量被正确的文本填充。update()似乎没有做任何事情。再次感谢!

UpdatePanel只在客户端到服务器端工作。您所描述的场景是不可能的(至少您使用的技术是不可能的)。这是因为服务器确实没有办法连接到客户端。

有两种可能:

  • 从客户端到服务器(你已经放弃了)
  • 如果你真的想从服务器端推送它,可以使用SignalR这样的框架。

SignalR为您实现了客户端和服务器端管道,并使用了当前浏览器中可用的最佳技术。

您可以在这里找到有关SignalR的更多信息:http://signalr.net/

与其尝试从Server -> Client,不如从Client -> Server。

所以在javascript中创建一个计时器,每隔XXX秒调用你的代码。

就像这样。

var myTimer = setInterval(myMethod, 5000);
function myMethod( )
{
  //this will repeat every 5 seconds
  //you can reset counter here
}

你可以通过调用

来清除计时器并停止它调用你的方法
clearInterval(myTimer);

最新更新