1

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

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

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

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

4

3 回答 3

1

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

于 2009-02-18T09:18:23.177 回答
1

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

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

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

于 2009-02-18T09:18:53.690 回答
0

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

于 2009-02-18T09:43:49.137 回答