Explique errores críticos en Visual Studio 2010 y versiones posteriores, WinForms y WPF.

Intenta poner el siguiente código dentroLoad controlador de eventos para WinForms oLoaded para WPF.

Dim doc As New XmlDocument
Dim nsmgr As New XmlNamespaceManager(Nothing) 'this line throws an exception

El problema es que la excepción no se produce y la corrupción de la pila ocurre. Puede tener diferentes efectos secundarios, según el IDE; consulte a continuación.

Los IDE afectados son: 2008, 2010 y 2012 (aquellos que podría probar). 2010 restablece el estado de la pila, y regresa desde el sub / controlador, como si nada hubiera pasado (pero sin proceder con otras declaraciones allí). 2012 puede advertir a un usuario sobre una aplicación fallida y un intento de ejecutarse encompatibility mode. La próxima vez que se ejecute, lo mismo que en 2010. 2008 lanza una excepción, pero solo en la configuración predeterminada (AnyCPU). Cambiar la plataforma de destino a x86 hace que el problema vuelva a aparecer en 2008 también.Los marcos afectados son WinForms y WPF. Las aplicaciones de consola y ASP.NET parecen funcionar bien. .NET v2.0-4.5.El alcance afectado es soloLoad evento hasta ahora. Poner este código en un botón lo hace funcionar.Configuración de construcción afectada = cualquiera. Probado por defectoDebug yRelease.

Por qué lo considero un error es porque puede dejar los objetos en un estado inestable; no terminaron de inicializarse, lo que no es un comportamiento esperado. Lo crítico de esto es que nadie sabrá que sucedió, ya que no lanza una excepción. Dependiendo de su diseño, puede terminar con datos incorrectos en su base de datos, lo que en el peor de los casos puede llevar a consecuencias graves.

¿Alguien tiene una buena explicación de por qué esto puede estar sucediendo y si hay una solución?

Respuestas a la pregunta(1)

Su respuesta a la pregunta