0

有人可以告诉我为什么这段代码不起作用。我猜这是因为没有回发解雇。如何启用回发?我正在尝试启用一个触发回发并运行方法的计时器(此处简化)。我需要在 .NET 2.0 中实现它,所以不能使用 UpdatePanel 或 Ajax Timer。

输出是;

页面加载

定时器滴答

我的方法

但是标签不可见。

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        System.Diagnostics.Trace.WriteLine("Page Load");
        System.Timers.Timer timer = new System.Timers.Timer();
        timer.Interval = 5000;
        timer.Enabled = true;
        timer.Start();
        timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);



    }
    protected void timer_Elapsed(object sender, EventArgs e)
    {
        System.Diagnostics.Trace.WriteLine("Timer Tick");
        my_method();  
    }


    protected void my_method()
    {
        System.Diagnostics.Trace.WriteLine("my_method");
        Label1.Visible = true;
    }

}
4

2 回答 2

3

计时器在页面的旧丢弃实例上运行。该实例仍在内存中,但已经执行了其渲染阶段,并且永远不会再次使用它。

要获得 PostBack,您需要使用 Ajax Timer 或纯 JavaScript。

于 2013-01-07T20:08:54.583 回答
1

计时器正在服务器上触发。客户端已经拥有该页面,并且在客户端(如 javascript)没有触发新请求的情况下不会自动请求更新;一旦发生这种情况,将呈现页面的新版本。

您需要在 javascript 端实现一些东西来触发事件以查找更新的信息,然后它可以根据需要更新它所拥有的 DOM。

于 2013-01-07T20:09:14.107 回答