OVH Cloud OVH Cloud

évènement et passage d'objet

3 réponses
Avatar
Davide
Bonjour,
ma question est je pense plutot simple:

Quand une classe déclenche un évènement elle passe un objet (souvent appelé
"sender"). Ma question est: est-ce que l'évènement envoie un copie ou
est-ce un pointeur vers l'objet?

Cette question simplement pour savoir si l'objet est effacé sans que la
fonction qui gère l'évènement soit terminé (si la fonction est asynchrome)
elle va lever l'exception : "La référence d'objet n'est pas définie à une
instance d'un objet." ?

Merci

3 réponses

Avatar
c2i-Richard Clark [MVP]
C'est une référence vers l'objet.
Rep à la question : oui ;-)

--
Richard Clark
http://www.c2i.fr - Le portail .NET
[Microsoft MVP .NET]
______________________________________________
'Au coeur de VB .NET' (MS Press, 430 pages, 34 euros)
http://www.amazon.fr/exec/obidos/ASIN/2100065645/c2ifrleportad-21
______________________________________________

"Davide" wrote in message
news:%
Bonjour,
ma question est je pense plutot simple:

Quand une classe déclenche un évènement elle passe un objet (souvent


appelé
"sender"). Ma question est: est-ce que l'évènement envoie un copie ou
est-ce un pointeur vers l'objet?

Cette question simplement pour savoir si l'objet est effacé sans que la
fonction qui gère l'évènement soit terminé (si la fonction est asynchrome)
elle va lever l'exception : "La référence d'objet n'est pas définie à une
instance d'un objet." ?

Merci




Avatar
Davide
Merci mon cher Monsieur Clark ;)

"c2i-Richard Clark [MVP]" a écrit dans le message de
news:ufjJA%
C'est une référence vers l'objet.
Rep à la question : oui ;-)

--
Richard Clark
http://www.c2i.fr - Le portail .NET
[Microsoft MVP .NET]
______________________________________________
'Au coeur de VB .NET' (MS Press, 430 pages, 34 euros)
http://www.amazon.fr/exec/obidos/ASIN/2100065645/c2ifrleportad-21
______________________________________________

"Davide" wrote in message
news:%
> Bonjour,
> ma question est je pense plutot simple:
>
> Quand une classe déclenche un évènement elle passe un objet (souvent
appelé
> "sender"). Ma question est: est-ce que l'évènement envoie un copie ou
> est-ce un pointeur vers l'objet?
>
> Cette question simplement pour savoir si l'objet est effacé sans que la
> fonction qui gère l'évènement soit terminé (si la fonction est


asynchrome)
> elle va lever l'exception : "La référence d'objet n'est pas définie à


une
> instance d'un objet." ?
>
> Merci
>
>




Avatar
Zazar
Bonjour,

ma question est je pense plutot simple:



Je ne suis pas sûr de l'avoir comprise :)

Quand une classe déclenche un évènement elle passe un objet (souvent


appelé
"sender"). Ma question est: est-ce que l'évènement envoie un copie ou
est-ce un pointeur vers l'objet?

Cette question simplement pour savoir si l'objet est effacé sans que la
fonction qui gère l'évènement soit terminé (si la fonction est asynchrome)
elle va lever l'exception : "La référence d'objet n'est pas définie à une
instance d'un objet." ?




En gros, vous avez une classe qui contient du code du genre :

MyClass myObject = new MyClass();

myEvent(myObject, new EventArgs());
myObject.DoSomething();

et vous voulez savoir ce qui se passe si la méthode suivante est abonnée à
myEvent :

public void MyMethode(object sender, EventArgs e) {
sender = null;
}

Si c'est bien ça votre question, alors il n'y a aucun problème.
myObject et sender sont toutes les deux des références vers le même objet,
mais modifier une des deux variables ne modifient pas l'autre (il aurait
fallu pour cela utiliser passer l'argument en utilisant ref ou out). Ce qui
pourrait être problèmatique serait :

public void MyMethode(object sender, EventArgs e) {
((IDisposable) sender).Dispose(); // En supposant que MyClass implémente
Disposable
}

--
Zazar