Label is not updated in event callback

B

Borr

Code fragment as simple as possible :

public class TestTimer : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Timers.Timer timer1;

private void Page_Load(
object sender,
System.EventArgs e)
{
Label1.Text = "Before timer";
}

private void timer1_Elapsed(
object sender,
System.Timers.ElapsedEventArgs e)
{
Label1.Text = "After timer";
timer1.Stop();
}

private void InitializeComponent()
{
this.timer1 = new System.Timers.Timer();
((System.ComponentModel.ISupportInitialize)
(this.timer1)).BeginInit();
this.timer1.Enabled = true;
this.timer1.Interval = 5000;
this.timer1.Elapsed += new
System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
this.Load += new System.EventHandler(this.Page_Load);
((System.ComponentModel.ISupportInitialize)
(this.timer1)).EndInit();

}

}

When the timer is elapsed, timer1_elapsed method is called
(I see it in the debugger), line

Label1.Text = "After timer";

runs without any problem, but in fact Label1
remains "Before timer" ! WHY ?

Label1 and timer1 were added automatically, with Web form
designer of Visual Studio .Net, InitializeComponent()
method was generated automatically, and I did not touch it.
 
C

Cliff Harris

The problem is that the timer is a server-side control, and while, yes, it
is firing properly, by the time it fires, the page has already been sent to
the client and therefore, updating the label only updates it on the server.
Once the page has been served, nothing that happens on the server will be
sent down to the client.
If you need something on the client side to update after a given interval,
you might want to look into a javascript timer, they seem to have worked
well for me in the past.

HTH,
-Cliff
 
B

bruce barker

because the timer fires after the page has been sent to the client, so the
change to label has no impact. you would need to put in a wait for the timer
in your onload, or at least by prerender, for any changes done by the timer
to appear in the rendered page.

-- bruce (sqlwork.com)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,527
Members
44,998
Latest member
MarissaEub

Latest Threads

Top