2010-04-19 4 views
0

J'ai fait un programme check_list étudiant qui utilise l'adaptateur Bluetooth recherche les étudiants cellulaires Bluetooth et les contrôles qui sont présents ou non et enregistre les informations des élèves avec la date dans le tableau sur la base de données.tout cela fonctionne très bien.Mais je veux faire automatique Je vais mettre mon programme sur un ordinateur comme des travaux comme un serveur et le programme fera la recherche à chaque heure de début des leçons comme 08.30, 10.25 ...C# comment utiliser la minuterie?

Ma question est de savoir comment utiliser la minuterie? Je sais comment utiliser la minuterie, mais comment puis-je l'utiliser à chaque heure de début des leçons? J'ai une table qui comprend l'heure de début des leçons. Également, dois-je arrêter le chronomètre après la fin de la recherche? Et si j'arrête la minuterie, puis-je relancer la minuterie?

Et une autre question: comment puis-je faire le suivi de l'arrivée de nouveaux étudiants ou d'une salle de classe à gauche?

Répondre

0

Vous pouvez vérifier périodiquement l'heure actuelle (comme toutes les 30 secondes avec une simple minuterie) et si rien ne se passe, tu dors, si c'est 10.25: démarrer votre vote Bluetooth.

Pendant les heures de cours, vous pouvez simplement interroger toutes les 5 minutes pour voir si de nouveaux étudiants sont là.

0

Vous pouvez définir la propriété Interval du minuteur comme étant la différence entre l'heure actuelle et l'heure de la prochaine leçon; puis réinitialiser la différence après que la leçon est terminée pour être prêt pour le prochain. Cependant, cela a des pièges évidents. Que se passe-t-il lorsque vous démarrez/arrêtez la minuterie? Vous devrez réinitialiser l'intervalle pour la leçon suivante.

Ou, vous pouvez faire une minuterie qui vérifie périodiquement s'il est temps de revérifier les appareils Bluetooth et si c'est le cas. Il n'aurait probablement pas besoin d'être trop précis.

// Add your own DateTimes 
DateTime[] times = new[] { new DateTime(2010, 4, 20, 16, 30,0,0), new DateTime(2010, 4, 20, 17, 0,0,0) }; 

Timer t = new Timer(); 
t.Interval = 30000; // 30 seconds, feel free to change 

// Each 30 secs check to see if the _time_ is before one of the ones specified; if it is RunMethod() 
t.Tick += (sender, e) => { if (times.Any(d => { DateTime dt = DateTime.Now; new DateTime(dt.Year, dt.Month, dt.Day, d.Hour, d.Minute, d.Second, d.Millisecond).CompareTo(dt) <= 0 })) RunMethod(); } 
+0

suis-je dois arrêter la minuterie ou non? Aussi, si je n'arrête pas la minuterie va causer des problèmes de performance Parce que ce programme fonctionnera sur le serveur peut-être trou année. – Ercan

0

j'utiliser Quartz.NET et planifier les emplois au lieu de jouer avec la minuterie ...

Questions connexes