2011-06-16 6 views
2

J'ai un graphique d'objet qui contient un objet qui déclenche des événements.C# Désactiver temporairement le gestionnaire d'événements pour la sérialisation?

Je veux sérialiser ce graphe, cependant je branche occasionnellement des gestionnaires dans l'événement qui appartiennent à des classes non sérialisables, et je ne veux pas que ces objets non sérialisables soient sérialisés en premier lieu. Fondamentalement, les choses non sérialisables comme les calendriers, les rapports, les graphiques, etc. se branchent dans le graphe de données et les événements sont pour des choses comme des mises à jour, etc. Je veux sérialiser mon graphe de données, mais pas mes rapports, calendriers,

Lorsque j'essaie de sérialiser mon graphe de données, j'obtiens une exception si le délégué d'événement n'est pas nul, car les classes de manipulation ne sont pas sérialisables. J'ai le code dans ces formes telles que quand je les ferme, les gestionnaires se déconnectent, ainsi je peux sauvegarder mon graphique de données tant que j'ai fermé tous les calendriers, rapports, etc.

La solution logique semblerait être:

  1. Définissez une variable temporaire égale à l'état actuel des gestionnaires d'événements, que ce soit null ou non.
  2. Définissez les gestionnaires d'événements sur null.
  3. Sérialiser mon graphique de données.
  4. Réinitialisez les gestionnaires d'événements à ce qu'ils étaient auparavant.

Cependant, cela ne fonctionne pas parce que je reçois une erreur de compilation indiquant mon mon événement ne peut exister que sur le côté gauche de + = ou - =

Comment puis-je supprimer tous les gestionnaires temporairement pendant que je sériale, puis les remettre en place après?

Répondre

4

Vous pourriez essayer d'appliquer [field:NonSerialized] à votre événement?

+1

Vous étiez plus rapide. Je peux simplement ajouter un lien vers un exemple: http://msdn.microsoft.com/en-us/library/ms182349%28v=vs.80%29.aspx :) –

+1

Merci. Cela a fonctionné parfaitement, et c'était si simple. – Ozzah

Questions connexes