Bonjour,

je développe actuellement un composant qui permettrait de faire tourner n'importe quelle méthode en background avec plusieurs propriétés.

Pour se faire, dans mon composant, j'ai un délégué :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
public delegate void Delegue<T>(T param);
et afin d'exécuter une méthode générique passé en paramètre, j'utilise la méthode suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
public void whatMustBeRunning<T>(Delegue<T> myMethod, T parameters)
        {
            myMethod(parameters);
        }
Jusque la aucun problème, je peux facilement exécuter mes méthodes.
Comme ce-ci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
composant.whatMustBeRunning(testDelegate, "test");
Ce que j'aimerais par contre, c'est réussir a exécuter l'instruction ici, dans la méthode DoWork d'un backgroundworker afin que celle-ci soit donc exécuté en arrière plan.

Etant donnée que j'ai ici un délégué et les paramètres à passer au backgroundworker, j'ai créé une classe intermédiaire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class generiqueMethode<T>
    {
 
        public delegate void Delegue(T param);
        private Delegue<T> monDelegue;
        private T mesParameters;
 
        public generiqueMethode(Delegue<T> myMethod, T parameters)
        {
            monDelegue = myMethod;
            mesParameters = parameters;
            //Thread test = new Thread(myMethod);
 
        }
 
        public void setMethode(Delegue<T> myMethod, T parameters)
        {
            monDelegue = myMethod;
            mesParameters = parameters;
        }
 
        public Delegue<T> getMethode()
        {
            return monDelegue;
        }
 
        public T getParamters()
        {
            return mesParameters;
        }
    }
En ajoutant la ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
generiqueMethode<T> jeDoisConnuDansLeWorker = new generiqueMethode<T>(myMethod, parameters);
je peux donc facilement remplir une instance qui retient toutes les informations que je dois passer au backgroundworker.

Cependant, je ne peux récupérer les informations car pour se faire, je dois déclarer generiqueMethode<T> jeDoisConnuDansLeWorker en global mais a ce moment la, le type T n'est pas reconnu.

Quelqu'un a une idée ?

Merci

A bientôt