Bonsoir,
le sujet à deja été traité sur le forum mais même avec ces post je bloque et appel à l'aide.
Le contexte c'est une appli client/serveur en remoting, et en fait j'execute une action coté client, cette action envoie un signal au serveur pour declencher un evenement sur mes clients abonnés.
Le problème c'est qu'au retour de l'evenement, sur le client, j'ai besoin de mettre à jour des controls sur mon form avec la méthode Tv_AjouteGroupe... C'est la que le drame commence![]()
Voici ce que j'ai fait pour essayer de palier, mais cela ne fonctionne point.
Comme vous pouvez le voir j'ai créé un delegate et j'ai appelé la méthode invoke, bref à pirori rien d'extraordinaire...
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using WebsiteManagement.Entite_site; using IEntiteSite; using System.Threading; namespace WebsiteManagement { public partial class Form1 : Form { // Ce délégué est utilisé pour appeler des méthode // depuis un thread non autorisé à appeler ces méthodes. public delegate void SafeCallBack_Tv_AjouteGroupe(string nom, IGroupe g); void EntiteSiteList_OnAddedIGroupe(GroupListEventArgs MyEvent) { if (this.InvokeRequired) { SafeCallBack_Tv_AjouteGroupe d = new SafeCallBack_Tv_AjouteGroupe(Tv_AjouteGroupe); this.Invoke(d , new object[] { "Nouveau groupe ()", MyEvent.Groupe } ); } else { // Un nouveau groupe à été ajouté // Ajout d'une nouvelle Node avec un nom par défaut this.Tv_AjouteGroupe( "Nouveau groupe (" + this.treeView1.Nodes.Count.ToString() + ")" , MyEvent.Groupe); } /* // Un nouveau groupe à été ajouté // Ajout d'une nouvelle Node avec un nom par défaut this.Tv_AjouteGroupe( "Nouveau groupe (" + this.treeView1.Nodes.Count.ToString() + ")" , MyEvent.Groupe);*/ } private void button1_Click(object sender, EventArgs e) { // demande de création d'un nouveau groupe au serveur this.GroupeSiteList.CreateGroup(); // La suite se passe dans le retour d'evenement // EntiteSiteList_OnAddedIGroupe } /// <summary> /// Méthode qui ajoute un nouveau groupe, /// donne le focus à la nouvelle Node, /// puis active son état d'édition. /// </summary> private void Tv_AjouteGroupe(string nom, IGroupe g) { System.Windows.Forms.TreeNode Tn = new TreeNode(nom); Tn.Name = nom; Tn.Tag = g; Tn.ContextMenuStrip = this.contextMenuStrip1; this.treeView1.BeginUpdate(); this.treeView1.Nodes.Add(Tn); this.treeView1.EndUpdate(); this.treeView1.Focus(); Tn.BeginEdit(); } } }
Mais sa plante lamentablement, je n'ai même plus de message d'erreur depuis le debuggeur(c'est pour vous dire).
Je suis obligé de l'arréter come un boeuf
Si vous avez besoin d'informations en plus, d'éclaircissement ect, faites le moi savoir.
Merci,
bye
Partager