Lorsqu'un thread est en veille, il ne consomme aucune utilisation de l'UC. Une manière très simple serait d'avoir un thread qui dort jusqu'au DateTime. Par exemple,
DateTime future = DateTime.Now.Add(TimeSpan.FromSeconds(30));
new Thread(() =>
{
Thread.Sleep(future - DateTime.Now);
//RaiseEvent();
}).Start();
Cela signifie essentiellement, obtenir une date dans le futur (trente secondes à partir de maintenant). Ensuite, créez un fil qui dormira pour la différence des temps. Ensuite, augmentez votre événement.
Modifier: Ajout d'informations supplémentaires sur les timers. Il n'y a rien de mal avec les minuteries, mais je pense que cela pourrait être plus de travail. Vous pourriez avoir une minuterie avec un intervalle de la différence entre les temps. Cela provoquera le déclenchement de l'événement tick lorsque le temps a rattrapé l'objet date/heure. Une alternative, que je ne recommanderais pas, et je pense que vous avez raison de cela, est d'avoir une minuterie se déclencher toutes les cinq secondes et de vérifier si les temps correspondent. J'éviterais cette approche et je ferais en sorte que le thread reste en sommeil jusqu'à ce qu'il y ait du travail à faire.
Merci pour la réponse. J'espérais qu'il y aurait une sorte d'événement incroyable dont je n'avais jamais entendu parler, et je suis toujours ouvert à des façons meilleures et plus propres de faire les choses plutôt que d'effectuer un tas de déclarations conditionnelles dans le temps. :) – RodgerB