2013-01-07 80 views
0

有人可以告诉我为什么这段代码不工作。我猜这是因为没有回发射击。我如何启用回发?我试图启用一个计时器,触发一个回传并运行一个方法(在这里简化)。我需要在.NET 2.0中实现它,所以不能使用UpdatePanel或Ajax Timer。system.timers.timer不会导致回发

输出是;

页面加载

计时器滴答

my_method

但标签不转可见。

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; 
    } 

} 

回答

3

定时器正在旧页面的旧丢弃实例上运行。这个实例仍然在内存中,但已经执行了Render阶段,并且永远不会再使用它。

要获得回传,您需要使用Ajax计时器或纯JavaScript。

1

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

您将需要在JavaScript方面实现一些功能来触发事件以查找更新的信息,然后它可以根据需要更新它所具有的DOM。

相关问题