Re : explication delegué

Langages .NET

explication delegué


milouse 03-30-2008, 11:39
Bonjour,
j'aurai besoin d'une petite explication sur les delegué voici un morceau de code

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.

Re : explication delegué


gargamel67 04-23-2008, 15:12
L'instanciation d'un delegué est un peu particulière.
Pour chaque méthode, il y a une seule instance: même méthode implique donc même instance à chaque fois.

JobsDotnet, Offres d'emploi .NET

Sponsorisé par Community Server


Conditions d’utilisation et Copyright
Respect de la vie privée