Comment passer une méthode en paramètre? - C#/.NET managed - Programmation
Marsh Posté le 01-03-2008 à 17:55:22
pour moi tu dois faire appel à un delegué. Renseigne toi la dessus.
Marsh Posté le 01-03-2008 à 21:34:49
Oui c'est bien ce que je pensais c'est d'ailleurs ce que j'utilise dans mon exemple
Marsh Posté le 01-03-2008 à 22:18:55
Bon j'avance gentillement mais c'est pas encore ca...
Code :
|
Marsh Posté le 01-03-2008 à 22:25:32
Bon finalement j'ai trouvé une solution mais Ô que c'est laid.... Il suffisait de déclarer le délégué en dehors de toute classe.
Avez-vous une autre alternative plus "propre"
Code :
|
Marsh Posté le 01-03-2008 à 23:23:39
Bon je continue sur la lancée...
J'ai trouvé beaucoup plus propre avec l'utilisation des évènements. Il suffit de définir la méthode appelée lorsque l'évènement "Modified" est déclanché.
Code :
|
Marsh Posté le 02-03-2008 à 01:28:54
Bon cette fois-ci on s'écarte beaucoup de l'origine mais le principe reste le même.
Un service et un client. Le client appel le service et défini des "évènements" suivant:
- Quand le processus à progressé
- Quand le processus est terminé
J'ai rajouté un GUI pour que ce soit plus ceux qui veulent tester. Il suffit de créer un nouveau projet sous Visual Studio C#, de supprimer le fichier Form1.Designer.cs, faire clic droit sur Form1.cs et sélectionner View Code. Ensuite il suffit juste de coller le code suivant en remplacant tout.
J'ai atteint mon but et je suis content...
Code :
|
Marsh Posté le 05-03-2008 à 02:02:45
Je suis un peu à la bourre, mais en gros...
Si j'ai bien pigé, t'as une application, et tu veux qu'un traîtement asynchrone tourne, et te prévienne de son avancement, c'est ça ?
Si oui, plutôt que de jouer avec des events, joue plutôt avec des Threads, c'est là pour ça.
Et qui plus est, les BackgroundWorker, qui sont d'une simplicité extrême à utiliser.
Exemple complet avec 3 boutons :
bouton1 = start
bouton2 = stop
bouton3 = pause/resume
Une progressbar qui indique où en est le worker
Un label qui indique l'état du worker
Une textbox qui indique jusqu'à combien compter (afin de provoquer une erreur si désiré)
Code :
|
-- Merde, j'avais pas fait gaffe que c'est ce à quoi t'es arrivé au final
En tout cas, c'est clairement la façon la plus élégante de faire ce genre de choses.
Tu peux aussi gérer des thread à la main, mais c'est infiniment plus complexe pour des possibilités dont on n'a pas forcément besoin.
Attention, le test sur "e.Error" dans le completed est très important : si le worker raise une exception, il va la trapper tout seul comme un grand, et la stocker à dedans.
Toute tentative d'accès à "e.Result" avec "e.Error != null" provoque une "InvalidOperationException" !
Marsh Posté le 01-03-2008 à 12:59:38
Mes yeux sont maintenant rouge de sang, c'est maintenant 3h49 du matin (Vancouver) et j'ai plus le courage à chercher...
Je souhaite définir un callback comme ceci:
Le problème c'est que cette partie là génère une erreur:
Cette partie là aussi d'ailleurs:
Pouvez-vous m'aider un peu?
Merci d'avance