Tu peux utiliser des frameworks .NET comme Quartz (http://www.quartz-scheduler.net/features.html) spécialisé dans l’orchestration/planification de Job .NET !
Personnellement j’ai un truc plus light !
Tout d’abord j’ai une méthode type :
protected void AddBackgroundTask(Action action, int pauseBetweenAction = 1000, bool catchError = true)
{
Task.Factory.StartNew(() =>
{
while (PackageHost.IsRunning)
{
try
{
action();
}
catch(Exception ex)
{
PackageHost.WriteError("Error on BackgroundTask: {0}", ex.ToString());
if(!catchError)
{
throw ex;
}
}
Thread.Sleep(pauseBetweenAction);
}
});
}
Cela me permet de lui donner une action à exécuter toutes les x secondes (par défaut toute les secondes).
De ce fait dans mon code je peux créer une tache en background qui s’occupe de savoir si il est 7h30 passé pour “faire quelque chose” comme envoyer ta notification !
Le truc c’est ensuite d’enregistrer que tu as fait l’action, par exemple, en conservant la date courante dans une varaible de sorte à vérifier que ton “action” ne se produit qu’une fois par jour, heure, minutes, etc…
var notifiEnvoye = DateTime.MinValue;
this.AddBackgroundTask(() =>
{
if(DateTime.Now.Date != notifiEnvoye.Date && DateTime.Now.Hour >= 7 && DateTime.Now.Minute >= 30)
{
// Envoyer la notification ici !
notifiEnvoye = DateTime.Now;
}
});
Donc en gros des boucles en background, qui loop en continue et check si les conditions sont satisfaites pour réaliser une action !