Загрузка новой сборки при сериализации - PullRequest
1 голос
/ 18 февраля 2009

У меня есть цикл в BackgroundWorker, который при необходимости сохраняет некоторые вещи через сериализацию xml, но, похоже, каждый раз загружается новая сборка

'xxyyzz.Main.vshost.exe' (управляемый): загружен '9skkbvdl'

'xxyyzz.Main.vshost.exe' (управляемый): загружен 'd2k4bdda'

и так далее. Почему это происходит? Что я могу с этим поделать? Меня это должно беспокоить? Эта программа будет работать долго без перезапуска ...

Ответы [ 3 ]

1 голос
/ 18 февраля 2009

Вы передаете дополнительные аргументы в свой XmlSerializer? то есть используя конструктор не по умолчанию? да, он делает это (так как каждый раз создает новую сборку сериализации) ... рассмотрите возможность создания сериализатора в инициализаторе типов и кэширования его:

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

, а затем повторно использовать кэшированный экземпляр сериализатора foo.

1 голос
/ 18 февраля 2009

Сборки генерируются на лету, когда вы создаете Сериализатор XML - меня это не слишком беспокоит, но если вы это сделаете, вы можете оставить ссылку на сериализатор для своего типа и использовать его в последующих вызовах.

0 голосов
/ 18 февраля 2009

Файлы "*. Vshost.exe " являются частью отладчика Visual Studio.

...