Bonjour,
j'aurai besoin d'une petite explication sur les delegué voici un morceau de code
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
public class Communication 
{ 
// déclaration type délégué 
public delegate int DataReceivedHandler(string data); 
// variable du type délégué donnée recue 
public DataReceivedHandler dataReceivedHandler=null; 

// ... 

//----------------------------------------------------------- 
// traitement d'attente en réception des données 
// effectué dans une boucle, exécuté par un thread 
public void RunReceptionData() 
{ 
string data= null; 

// boucle d'attente 
while(true) 
{ 
// donnée en reception 
// ... remplir variable data 

// appel délégué pour signaler présence donnée recue 
if( dataReceivedHandler != null) 
dataReceivedHandler(data); 

// suite traitement ... 
} 
} 
} 

private void Form1_Load(object sender, System.EventArgs e) 
{ 
// instancie l'objet pour communiquer 
comm= new Communication(); 


// instancie le délégué 
comm.dataReceivedHandler= new Communication.DataReceivedHandler(this.DonneeRecue); 
} 

//----------------------------------------------------------- 
// déclenché par le délégué lorsque une donnée est recue 
private void DonneeRecue(string data) 
{ 
// affiche le message recu 
MessageBox.Show("donnée recue: "+data); 
}
c'est juste un code d'exemple il ne compilera pas.Je veux juste une explication en instanciant un delegué a chaque fois
comm.dataReceivedHandler= new Communication.DataReceivedHandler;
normalement dataReceivedHandler doit alors chaque fois pointer vers une nouvelle adresse et le garbage collector supprimera la donnée de l'adresse precedante non?Pourquoi dans ce cas cela ne fonctionne pas?
merci.