Je travaille sur un petit robot d'exploration du Web qui fonctionnera dans la barre d'état système et explorera un site Web toutes les heures.
Quelle est la meilleure façon de faire en sorte que .NET déclenche un événement toutes les heures ou à un autre intervalle pour effectuer une tâche. Par exemple, je veux lancer un événement toutes les 20 minutes en fonction de l'heure. L'événement serait déclenché à :
00:20
00:40
01:00
01:20
01:40
et ainsi de suite. Le meilleur moyen auquel je pense pour faire cela est de créer une boucle sur un thread, qui vérifie constamment si le temps est divisible par un intervalle donné et soulève un événement de rappel si le temps est atteint. Je pense qu'il doit y avoir un meilleur moyen.
J'utiliserais un Timer
mais je préférerais quelque chose qui suive un "programme" qui fonctionne à l'heure ou quelque chose de ce genre.
Est-ce possible sans configurer mon application dans le planificateur de tâches de Windows ?
UPDATE :
J'ajoute mon algorithme pour calculer l'intervalle de temps d'une minuterie. Cette méthode prend un " minute
Le paramètre " " indique l'heure à laquelle le minuteur doit déclencher un tic-tac. Par exemple, si le paramètre " minute
"est 20, alors la minuterie fonctionnera aux intervalles indiqués dans le calendrier ci-dessus.
int CalculateTimerInterval(int minute)
{
if (minute <= 0)
minute = 60;
DateTime now = DateTime.Now;
DateTime future = now.AddMinutes((minute - (now.Minute % minute))).AddSeconds(now.Second * -1).AddMilliseconds(now.Millisecond * -1);
TimeSpan interval = future - now;
return (int)interval.TotalMilliseconds;
}
Ce code est utilisé comme suit :
static System.Windows.Forms.Timer t;
const int CHECK_INTERVAL = 20;
static void Main()
{
t = new System.Windows.Forms.Timer();
t.Interval = CalculateTimerInterval(CHECK_INTERVAL);
t.Tick += new EventHandler(t_Tick);
t.Start();
}
static void t_Tick(object sender, EventArgs e)
{
t.Interval = CalculateTimerInterval(CHECK_INTERVAL);
}