2009-11-29 7 views
0

J'appelle un threading.timer de global.asax qui appelle de nombreuses méthodes dont chacune obtient des données de différents services et les écrit dans des fichiers. Ma question est comment puis-je faire les méthodes à invoquer régulièrement, disons 5 minutes?Threading.Timer appelle plusieurs méthodes de manière asynchrone

Ce que je fais est: dans Global.asax Je déclare une minuterie

protected void Application_Start() 
{ 
    TimerCallback timerDelegate = new TimerCallback(myMainMethod); 
    Timer mytimer = new Timer(timerDelegate, null, 0, 300000); 
    Application.Add("timer", mytimer); 
} 

la déclaration de myMainMethod ressemble à ceci:

public static void myMainMethod(object obj) 
{ 
    MyDelegateType d1 = new MyDelegateType(getandwriteServiceData1); 
    d1.BeginInvoke(null, null); 
    MyDelegateType d2 = new MyDelegateType(getandwriteServiceData2); 
    d2.BeginInvoke(null, null); 
} 

cette approche fonctionne très bien, mais il invoque myMainMethod tous les 5 minutes Ce dont j'ai besoin, c'est la méthode à invoquer 5 minutes après que toutes les données soient récupérées et écrites dans des fichiers sur le serveur.

Comment faire cela?

Répondre

0

Vous devez recréer une minuterie juste avant la fin de "myMainMethod", et désactiver/supprimer le minuteur précédent. Je ne suis pas au courant de C3 syntaxe

Quelque chose comme:

protected void Application_Start() 
{ 
    TimerCallback timerDelegate = new TimerCallback(myMainMethod); 
    Timer mytimer = new Timer(timerDelegate, null, 0, 300000); 
    Application.Add("timer", mytimer); 
} 


public static void myMainMethod(object obj) 
{ 
    MyDelegateType d1 = new MyDelegateType(getandwriteServiceData1); 
    d1.BeginInvoke(null, null); 
    MyDelegateType d2 = new MyDelegateType(getandwriteServiceData2); 
    d2.BeginInvoke(null, null); 
    // find a way to pass mytimer as an argument of the myMainMethod 
    // or use a global variable 
    Application.Remove("timer", mytimer); 
    Application.Add("timer", mytimer); 
} 
Questions connexes