Bonjour à tous,
Je rencontre un petit problème au niveau des lambdas expressions.
Voici un code qui, initialement, marche :
Par contre, lorsque j'essye de remplacer mon delegate par une lambda expression comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private delegate void WindowInvokeHandler(); public static void close() { //... Application.window.Invoke(new WindowInvokeHandler(Application.window.Close())); //... }
J'obtiens l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public static void close() { //... Application.window.Invoke(() => Application.window.Close()); //... }
Mais si je fais ça :Envoyé par Visual Studio
ça marche parfaitement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 private delegate void WindowInvokeHandler(); public static void close() { //... WindowInvokeHandler wih = () => Application.window.Close(); Application.window.Invoke(wih); //... }
Donc là je suis perplexe... quelle est, au final, la différence entre les deux dernières versions ? Je suis pas trop expert des lambdas expressions, donc je ne vois vraiment pas...
Surtout que:
WindowInvokeHandler = lambda expression //OK
Invoke(System.Delegate = WindowInvokeHandler) //OK
Donc conclusion : Invoke(System.Delegate = lambda expression) devrait marcher non?
Non ?
Donc voilà, si quelqu'un voit mon erreur et peut m'éclairer...
Je vous remercie par avance !
Partager