2009-02-18 7 views
1

J'ai une boucle dans un BackgroundWorker qui sauve des choses par sérialisation XML en cas de besoin, mais cela semble charger une nouvelle assemblée chaque foisnouvel ensemble lors de la sérialisation

« xxyyzz.Main.vshost.exe » (Géré): Chargé '9skkbvdl'

'xxyyzz.Main.vshost.exe' (géré): Chargé 'd2k4bdda'

et ainsi de suite. Pourquoi cela arrive-t-il? Y at-il quelque chose que je peux faire à ce sujet? Est-ce quelque chose dont je devrais me préoccuper? Ce programme fonctionnera longtemps sans redémarrage ...

Répondre

1

Les assemblages sont générés à la volée lorsque vous créez le XML Serializer - je ne serais pas trop inquiet à ce sujet, mais si vous êtes, vous pourrait contenir une référence au sérialiseur pour votre type, et l'utiliser dans les appels successifs

1

Transmettez-vous des arguments supplémentaires dans votre XmlSerializer? c'est-à-dire en utilisant un constructeur non défini par défaut? yup, il le fait (comme il construit un nouvel ensemble de sérialisation chaque fois) ... envisager la création sérialiseur dans un type initialiseur et mettre en cache:

static readonly XmlSerializer foo; 
static MyType() { 
    foo = new XmlSerializer(typeof(TypeToSerialize), additionalArgs); 
} 

utilisent alors la foo instance de sérialiseur mis en cache à plusieurs reprises.

Questions connexes