Where instantiate System.Threading.Timer

Dear experts,

I want to use System.Threading.Timer. My question is, where should I instantiate it to start ticking? I probably want to do it only once, and not on each Page_Load().
I trued to do it like this:
    private readonly System.Threading.Timer tpsTimer = new System.Threading.Timer(CheckForPastDue, null, 10000, 5000);
on my page (rather, MasterPage), but it didn't work as the CheckForPastDue method is not static.
Thanks.
tantormediaAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

raterusCommented:
What do you need a timer for?  You might have much better luck with the javascript "setTimeout" function.  Due to the stateless nature of web pages, I don't see how a server side time object will do anything meaningful for you.
0
tantormediaAuthor Commented:
I want the timer to call a method that checks if some items are past due, and if there are any, to send email notifications.
I cannot use PageMethod as it has to be static, which I don't want.
0
raterusCommented:
In the past, when I have to do something like this, it's completely outside of asp.net.  I'll write a console based .net program that runs the check/sends emails, and then enter a scheduled task on the server to have it run every as often as it's needed.

There are also workarounds using the asp.net cache object that calls a method as often as you'd like,
http://www.beansoftware.com/ASP.NET-Tutorials/Scheduled-Tasks.aspx

The only downside to the latter approach is that the asp.net application will never shutdown on the webserver, which just uses up more server resources.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Learn Ruby Fundamentals

This course will introduce you to Ruby, as well as teach you about classes, methods, variables, data structures, loops, enumerable methods, and finishing touches.

Vikram Singh SainiSoftware Engineer cum AD DeveloperCommented:
Hi,

Try it in Global.asax.

Regards,
VSS

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Threading;

namespace TestNet4
{
    public class Global : System.Web.HttpApplication
    {
        void Application_Start(object sender, EventArgs e)
        {
            private readonly System.Threading.Timer tpsTimer = new System.Threading.Timer(CheckForPastDue, null, 10000, 5000);
        }

        void Application_End(object sender, EventArgs e)
        {
            //  Code that runs on application shutdown

        }

        void Application_Error(object sender, EventArgs e)
        {
            // Code that runs when an unhandled error occurs

        }

        void Session_Start(object sender, EventArgs e)
        {
            // Code that runs when a new session is started

        }

        void Session_End(object sender, EventArgs e)
        {
            // Code that runs when a session ends. 
            // Note: The Session_End event is raised only when the sessionstate mode
            // is set to InProc in the Web.config file. If session mode is set to StateServer 
            // or SQLServer, the event is not raised.

        }

    }   

}

Open in new window

0
tantormediaAuthor Commented:
vs00saini,

Thank you for your answer. But my manager just said it should not be connected to my asp.net application, but has to be a separate program.
0
tantormediaAuthor Commented:
Thank you for your help. I will also go with a Console application using System.Threading.Timer.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP.NET

From novice to tech pro — start learning today.