none
Appel de méthode générique à partir d'un thread RRS feed

  • Question

  • Bonjour,
    je cherche comment appeler une méthode générique à partir d'un thread. J'ai essayé avec cette exemple mais il m'affiche des erreurs.

    class Program
        {
            static void Main(string[] args)
            {
                int i = 5;
                double d = 9.5;
                string s = "abcd";
                Voiture v = new Voiture();
     
     
                Thread newThread = new Thread(Affiche);
    newThread.Start(); 
                Afficheur.Affiche(i);
                Afficheur.Affiche(d);
                Afficheur.Affiche(s);
                Afficheur.Affiche(v);
            }
        }
     
        public static class Afficheur
        {
            public static void Affiche<T>(T a)
            {
                Console.WriteLine("Afficheur d'objet :");
                Console.WriteLine("\tType : " + a.GetType());
                Console.WriteLine("\tReprésentation : " + a.ToString());
            }
        }
     
        public class Voiture
        {
            public string Couleur { get; set; }
            public string Marque { get; set; }
            public int Vitesse { get; set; }
        }
    avez-vous une idée comment appeler la méthode Affiche ?

    jeudi 16 décembre 2021 09:34

Réponses

  • Bonjour DevInDotNet,

    Votre méthode générique Affiche attend un paramètre et la bonne méthode pour le passer est la méthode Thread.Start(Object).

    En vue de la correcte méthode Start à substituer, je vous propose de modifier votre code de la façon suivante :

        class Program
        {
            static void Main(string[] args)
            {
                int i = 5;
                //double d = 9.5;
                //string s = "abcd";
                
                Thread newThread = new Thread(Afficheur.Affiche);
                newThread.Start(i);   //enlevez le commentaire et passez une variable de type double (d) ou string (s).
                Console.ReadKey(false);
            }
    
            public static class Afficheur
            {
                public static void Affiche<T>(T a)
                {
                    Console.WriteLine("Afficheur d'objet :");
                    Console.WriteLine("\tType : " + a.GetType());
                    Console.WriteLine("\tReprésentation : " + a.ToString());
                }
            }
        }


    Cordialement,
    Dimitar

    jeudi 16 décembre 2021 17:07
    Modérateur