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
"Borr" <> wrote in message
news:0a9801c3a3c2$6b9a40c0$...
> 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_Elap sed);
> 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.
>
|