2009-08-17 6 views
1

Je suis en train de porter une application de Java vers C# et je suis confronté à un problème lié aux différents comportements et fonctionnalités entre les java.util.Timer et System.Threading.Timer. En fait, dans la version Java de la classe Timer, il existe une fonctionnalité (utilisée dans le code original) pour les tâches de planification, qui n'est pas présente dans la version .NET, où il est possible de programmer une tâche (via une fonction déléguée) à la fois.Conversion de la classe Timer de java en C#: tâches de planification

Existe-t-il une solution, même un petit ensemble de classes pour implémenter la fonctionnalité? J'ai remarqué l'existence de plusieurs bibliothèques de planification (un exemple est Quartz), mais je préférerais une solution qui minimiserait la quantité de code à utiliser.

Merci à tous! :)

Répondre

1

Vous pouvez simplement utiliser n'importe quelle classe de minuterie. Pour chaque tâche planifiée, créer une nouvelle classe de minuterie et juste régler les Intervalle propriété à (ScheduledTime - DateTime.Now) .TotalMilliseconds et régler la AutoReset propriété sur false (ou Enabeld propriété sur false dans le code-behind pour l'événement Tick). Cela va exécuter votre code une fois au ScheduledTime spécifié.

+0

parfois je pose des questions à StackOverflow comme je le ferais dans la vraie vie à un ami: en fait, quelques minutes après que je l'ai écrit ici, j'ai élaboré une solution similaire à celle que vous avez décrite ici :) – Antonello

1

Il y a au moins 4 temporisateurs dans .NET. Votre réponse courte: utilisez System.Threading.Timer. Je vous recommande de lire sur les minuteurs ici here, ainsi que de regarder dans System.Windows.Threading.DispatchTimer (partie de WPF) qui peut distribuer des événements à des moments particuliers, mais le fait sur le thread de l'interface utilisateur.