using System;
using System.Threading;

namespace Prog_Synchrone
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Début d'exécution de la méthode Main.");
			int cpt = 0;
            Console.WriteLine();
            LongTask myLongueTask = new LongTask();
            myLongueTask.Run();
            while (!myLongueTask.isCompleted)
            {
                Console.WriteLine($"{++cpt}: la longue tâche est en cours d'exécution.");
            }
            Console.WriteLine("Fin du programme Main.");
            Console.ReadKey();
        }

    }

    class LongTask
    {
        public bool isCompleted = false;

        public void Run()
        {
            Console.WriteLine("Début d'exécution de la méthode Run.");
            RunLongTask();
            Console.WriteLine("Fin de la méthode Run.");
        }

        private void RunLongTask()
        {
            Console.WriteLine("Début d'exécution de la méthode RunLongTask.");
            Thread.Sleep(100);
            isCompleted = true;
            Console.WriteLine("Fin de l'exécution de la méthode RunLongTask.");
        }
    }
}
