有人可以告诉我为什么这段代码不起作用。我猜它是因为没有回发射击。如何启用回发?我正在尝试启用一个触发回发的计时器并运行一个方法(这里简化)。我需要在.NET 2.0中实现它,所以不能使用UpdatePanel或Ajax 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;
}
}
答案 0 :(得分:3)
计时器正在旧的丢弃的Page实例上运行。此实例仍在内存中,但已执行渲染阶段,并且永远不会再次使用它。
要获得PostBack,您需要使用Ajax Timer或纯JavaScript。
答案 1 :(得分:1)
计时器正在服务器上触发。客户端已经拥有该页面,并且不会在客户端(如javascript)发出新请求的情况下自动请求更新;一旦发生这种情况,将呈现新版本的页面。
您需要在javascript端实现一些事情来触发事件以查找更新的信息,然后它可以根据需要更新它拥有的DOM。