J'essaye d'implémenter une fonction de minuterie récurrente asp.net. Je ne suis pas en mesure de créer un service Windows car j'héberge le site sur un environnement partagé et que je n'ai donc pas accès.Minuterie récurrente dans Asp.net
J'ai lu divers moyens d'y parvenir chacun avec leurs propres avantages/inconvénients. Le cache object approach semblait prometteur, mais semble être un hack.
J'ai essayé d'implémenter un httphandler qui va faire tourner un seul objet System.Threading.Timer pour faire un cycle toutes les minutes et faire un peu de travail. Peut-être mettre en file d'attente d'autres éléments de travail.
Voici ce que j'ai jusqu'à présent:
public class Scheduler : IHttpHandler
{
protected static TimerCallback tcb = null;
protected static Timer timer = null;
static Scheduler()
{
tcb = new TimerCallback(DoWork);
timer = new Timer(tcb, null, TimeSpan.Zero, new TimeSpan(0, 0, 1, 0));
}
private static void DoWork(Object stateInfo)
{
}
public void ProcessRequest(HttpContext context)
{
}
public bool IsReusable
{
get { return false; }
}
}
Je lis here que vous devez conscient de la minuterie ne sont pas éliminés lorsque le déchargement AppDomain. Il implique que c'est seulement un problème si vous invoquez du code natif que je ne suis pas. Je ne pouvais pas comprendre comment lier dans l'événement application_end pour disposer de la minuterie à partir du gestionnaire.
Ma question est la suivante: L'approche ci-dessus est-elle loin de la cible? Y a-t-il une meilleure manière de faire cela? Serait-il plus logique d'abandonner les variables statiques et de stocker la minuterie dans l'état de l'application?
Désolé, j'ai besoin d'avis renseignés. J'ai l'impression de tourner en rond.
Merci,
Qu'essayez-vous réellement d'accomplir? Votre HttpHanlder ne se déclenchera que lorsqu'il sera appelé, donc je ne pense pas que cela vous aidera beaucoup. Vous pourriez avoir un service sur une boîte que vous contrôlez qui appelle le HttpHandler - mais c'est un autre hack. Avez-vous demandé au FAI si vous pouvez installer un service? Ils * pourraient * vous laisser si vous demandez gentil. –