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é :
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 public delegate void Delegue<T>(T param);
Jusque la aucun problème, je peux facilement exécuter mes méthodes.
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); }
Comme ce-ci :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part composant.whatMustBeRunning(testDelegate, "test");
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 :
En ajoutant la ligne :
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; } }
je peux donc facilement remplir une instance qui retient toutes les informations que je dois passer au backgroundworker.
Code : Sélectionner tout - Visualiser dans une fenêtre à part generiqueMethode<T> jeDoisConnuDansLeWorker = new generiqueMethode<T>(myMethod, parameters);
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
Partager