Un afficheur de petits points en C#

J'utilise fréquemment un exemple banal de multiprogrammation pour enseigner les threads, exemple dans lequel j'affiche un petit point par seconde à la console jusqu'à ce qu'un usager appuie sur une touche. Ceci permet de combiner opération cyclique qui ne doit pas être bloquée et opération bloquante.

Voici une version C# opérationnelle et sans prétention, pour les curieuses et les curieux...

namespace TiPoints
{
    class Minuterie
    {
        public delegate void FonctionRappel();
        private void Cyclique()
        {
            while (!Mort())
            {
                Rappeler();
                Dodo();
            }
        }
        private bool mort_;
        public bool Mort()
        {
            return mort_;
        }
        public void Dodo()
        {
            System.Threading.Thread.Sleep(délai_);
        }
        public void Rappeler()
        {
            if (fct_ != null)
                fct_();
        }
        private FonctionRappel fct_;
        private System.Threading.Thread cyclique_;
        private int délai_;
        public void Meurs()
        {
            mort_ = true;
            cyclique_.Join();
        }
        public Minuterie(FonctionRappel fr)
        {
            délai_ = 1000; // bof
            fct_ = fr;
            mort_ = false;
            cyclique_ = new System.Threading.Thread
                               (new System.Threading.ThreadStart(Cyclique));
            cyclique_.Start();
        }
    }
    class Program
    {
        private static void Rappel()
        {
            System.Console.Write(".");
        }
        static void Main(string[] args)
        {
            System.Console.WriteLine("Appuyez sur ENTER pour terminer");
            Minuterie m = new Minuterie (Rappel);
            System.Console.ReadLine();
            m.Meurs();
        }
    }
}

Valid XHTML 1.0 Transitional

CSS Valide !