J'écris une application qui utilise une minuterie pour afficher un compte à rebours à l'écran quand un événement se produit. Je veux réutiliser le minuteur, car il serait pratique pour quelques choses dans l'application, donc je précise les mots que je veux entourer le minuteur. Par exemple, l'appel de fonction suivante:Comment exécuter une minuterie synchrone en C#?
CountdownTimer(90, "You have ", " until the computer reboots");
montrerait:
You have 1 minute 30 seconds until the computer reboots
puis décompter.
J'utilise le code suivant:
private void CountdownTimer(int Duration, string Prefix, string Suffix)
{
Countdown = new DispatcherTimer();
Countdown.Tick += new EventHandler(Countdown_Tick);
Countdown.Interval = new TimeSpan(0, 0, 1);
CountdownTime = Duration;
CountdownPrefix = Prefix;
CountdownSuffix = Suffix;
Countdown.Start();
}
private void Countdown_Tick(object sender, EventArgs e)
{
CountdownTime--;
if (CountdownTime > 0)
{
int seconds = CountdownTime % 60;
int minutes = CountdownTime/60;
Timer.Content = CountdownPrefix;
if (minutes != 0)
{
Timer.Content = Timer.Content + minutes.ToString() + @" minute";
if (minutes != 1) { Timer.Content = Timer.Content + @"s"; }
Timer.Content = Timer.Content + " ";
}
if (seconds != 0)
{
Timer.Content = Timer.Content + seconds.ToString() + @" second";
if (seconds != 1) { Timer.Content = Timer.Content + @"s"; }
}
Timer.Content = Timer.Content + CountdownSuffix;
}
else
{
Countdown.Stop();
}
}
Comment puis-je faire cette course de manière synchrone? Par exemple, je voudrais la suite d'attendre 90 secondes puis redémarrer:
CountdownTimer(90, "You have ", " until the computer reboots");
ExitWindowsEx(2,0)
considérant qu'il appelle le redémarrage immédiatement à l'heure actuelle.
Tous les pointeurs seraient les bienvenus!
Merci,
Ben
J'aime cette réponse +1 –