2 votes

La table de données sauvegardée dans l'état Session perd les gestionnaires d'événements

J'ai une DataTable à partir d'un DataSet fortement typé qui a un gestionnaire d'événement sur l'événement TableNewRow (pour initialiser certains champs de date).

Lorsque j'enregistre ce tableau dans l'état Session, le gestionnaire d'événement se déclenche normalement jusqu'à ce que le tableau soit sérialisé. Lors des requêtes suivantes, lorsque je récupère le tableau dans l'état Session, le gestionnaire d'événement ne se déclenche plus.

S'agit-il d'un comportement normal, et suis-je censé recâbler les gestionnaires d'événements sur la désérialisation ? Si oui, puisqu'il n'y a aucun moyen de vérifier si le gestionnaire d'événement a été ajouté, quel est le bon crochet pour effectuer le recâblage ?

1voto

jbl Points 8560

En fonction de votre sérialisation, vous pouvez essayer de définir le gestionnaire d'événements par le biais de l'attribut OnDeserialized https://stackoverflow.com/a/4172266/1236044

Pour la sérialisation Xml, vous pouvez peut-être essayer quelque chose comme ceci :

public override void ReadXml (XmlReader reader)
{
    base.ReadXml(reader);
    NewRow+=....
}

0voto

Vladimir Perevalov Points 2593

Comment stockez-vous l'état de votre session ? Si c'est autre chose que InProc, alors tous vos objets sont sérialisés et sauvegardés dans une base de données. Ils sont ensuite lus à partir de la désérialisation. De cette manière, vous perdez les abonnements aux événements.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X