新的XmlSerializer(typeof(MyClass))导致内存损坏?

时间:2010-10-28 14:51:25

标签: c# asp.net

我有一个动态加载程序集的应用程序:

 Assembly asm = Assembly.Load("MyClass.DLL");
 Type type = asm.GetType("MyClass");

 MyClass runningAssembly = (MyClass)Activator.CreateInstance(type);
 runningAssembly.start();

加载并调用start()方法后,执行以下代码:

 XmlSerializer deserializer = new XmlSerializer(typeof(MyClass));

抛出以下异常:

 "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."

我一直在绊倒这个原因并且无法掌握它。有人有任何提示吗?我似乎也无法捕捉到这个错误......它在try / catch中一直吹响。

顺便说一下,错误不会始终发生。有时在调试模式下它工作正常,但似乎一旦它启动,它甚至会在重新启动Visual Studio后发生。重新启动会将其清除并允许它至少工作一次。从已编译的EXE运行时也会发生这种情况。

修改

我尝试了同样的事情,但没有动态加载程序集。我把它直接称为一个类,即:

MyClass c = new MyClass();
c.start();

同样的问题仍然存在,因此它似乎与动态加载无关。

1 个答案:

答案 0 :(得分:1)

现在很难在不了解MyClass的情况下导致问题的原因。什么是构造函数,尤其是start()方法中的内容?代码是否有任何不安全的代码?如果你正在解决不安全的记忆,你很可能会遇到所描述的行为。

如果你的start()方法正在启动一个新线程并且新线程抛出异常,你将无法在start方法的try / catch中捕获它。