序列化时加载新程序集

时间:2009-02-18 09:15:04

标签: c# memory-management assemblies xml-serialization

我在BackgroundWorker中有一个循环,可以在需要时通过xml序列化保存一些东西,但这似乎每次加载一个新的程序集

  

'xxyyzz.Main.vshost.exe'(已管理):已加载'9skkbvdl'

     

'xxyyzz.Main.vshost.exe'(已管理):已加载'd2k4bdda'

等等。为什么会这样?我能做些什么吗?这是我应该关注的吗?这个程序将长时间保持运行而不重启...

3 个答案:

答案 0 :(得分:1)

创建XML Serializer时会动态生成程序集 - 我不会太在意它,但是如果你这样,你可以保留对你的类型的序列化程序的引用,并在过度调用中使用它

答案 1 :(得分:1)

您是否将其他参数传递给XmlSerializer?即使用非默认构造函数?是的,它这样做(因为它每次构建一个新的序列化程序集)...考虑在类型初始化程序中创建序列化程序并缓存它:

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

然后重复使用缓存的foo序列化程序实例。

答案 2 :(得分:0)

*.vshost.exe”文件是visual studio调试器的一部分。