【问题标题】:Loading new assembly when Serializing序列化时加载新程序集
【发布时间】:2009-02-18 09:15:03
【问题描述】:

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

“xxyyzz.Main.vshost.exe”(托管):已加载“9skkbvdl”

“xxyyzz.Main.vshost.exe”(托管):已加载“d2k4bdda”

等等。为什么会这样?我能做些什么吗?这是我应该关心的事情吗?该程序将长时间运行而无需重新启动...

【问题讨论】:

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


    【解决方案1】:

    程序集是在您创建 XML 序列化程序时动态生成的 - 我不会太在意它,但如果您是,您可以为您的类型保存对序列化程序的引用,并在连续调用中使用它

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        “*.vshost.exe”文件是 Visual Studio 调试器的一部分。

        【讨论】:

          猜你喜欢
          • 2010-10-02
          • 2012-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-24
          • 2021-03-02
          • 1970-01-01
          相关资源
          最近更新 更多