Timer thread stops running

  • Thread starter Thread starter Todd
  • Start date Start date
T

Todd

I have an ASP.NET application and I would like to have some code run
on the server automatically once a day at a specified time.

I create a timer thread to call a simple callback in the
Application_Start method. It seems to call the callback once or twice
while the application starts up but appears to stop once the default
page is displayed. Here is the code below (from Global.asax.cs):

public static void ProcessAccounts (object state) {
StreamWriter writer = new StreamWriter (@"c:\temp\testcallback.txt",
true);
writer.WriteLine (DateTime.Now.ToLongTimeString ());
writer.Close ();
}

protected void Application_Start(Object sender, EventArgs e)
{
TimerCallback callback = new TimerCallback (ProcessAccounts);
Timer timer = new Timer (callback, null, 0, 5000);
}

Any help would be much appreciated.

Cheers,
Todd.
 
the easiest way to do this is to drop a timer control onto your global.asax
designer. Then customize it like you normally would using the interval
settings. In the event handler you would just put your processaccounts code.
Let .net do the management work for you instead of you doing it.
 
Alvin, thanks for your help.

The drag and drop of the timer control from the Components gallery
creates a server-based timer. My previous approach was creating a thread
timer.

The server-based timer appears to be basically working but I have two
new problems with this approach.

Firstly, it appears to fire the Elapsed event twice (one second apart)
each time the specified interval elapses (in my test case 15 seconds).

Second, I couldn't see how to easily set an initial elapse time followed
by regular intervals of a standard elapse time (as you can with the
System.Threading.Timer class).

Regards,
Todd
 
As i can see you have following
protected void Application_Start(Object sender, EventArgs e)
{
TimerCallback callback = new TimerCallback (ProcessAccounts);
Timer timer = new Timer (callback, null, 0, 5000);
}

what is the scope of the timer object?

I hope you are getting my drift.

In any normal language timer will disappear as soon as you left the Start.
In .NET it's at random (whenever GS will eat you timer).
the same goes to the callback.

George.
 
Back
Top