Neo*_*isk 7 wpf winforms form-load
尝试将以下代码放在Load
WinForms或Loaded
WPF的事件处理程序中.
Dim doc As New XmlDocument
Dim nsmgr As New XmlNamespaceManager(Nothing) 'this line throws an exception
Run Code Online (Sandbox Code Playgroud)
问题是不抛出异常,并发生堆栈损坏.它可能有不同的副作用,具体取决于IDE - 见下文.
compatibility mode
.之后的下一次运行与2010年相同.2008正确抛出异常,但仅限于默认配置(AnyCPU).将平台目标切换到x86也会使问题再次出现在2008年.Load
事件.将此代码放入按钮使其工作.Debug
和Release
.为什么我认为它是一个错误是因为它可以使对象处于不稳定状态 - 它们没有完成初始化,这不是预期的行为.重要的是,没有人会知道它发生了,因为它不会引发异常.根据您的设计,您最终可能会在数据库中显示不正确的数据,这在最坏的情况下可能会导致严重的后果.
有没有人能够解释为什么会发生这种情况以及是否有解决方法?
该问题是由 wow64 模拟层引起的,当您在 x64 操作系统上定位 x86 平台时,该模拟层就会发挥作用。
它吞掉负责触发 Load 事件的代码中的异常。
因此,调试器看不到异常,也无法介入处理这种情况。
这篇文章似乎很好地记录了那里发生的事情,
汉斯·帕桑特(Hans Passant)之前的回答(所有的积分和赞成票都归于该答案)解释了可能的解决方法。
我最喜欢的一个是将所有内容移出 Form_Load 事件并将有问题的代码放入表单构造函数中。(当然不知道是否适用于你的情况)
归档时间: |
|
查看次数: |
615 次 |
最近记录: |