我有一个在 Windows Xp 和 Windows 7 上正确运行的 WPF 应用程序。当我在 Windows 服务器 2012 上安装它时,我意识到处理 AutomationPeers 时发生错误。这是堆栈跟踪的一部分:
...在 System.Windows.Automation.Peers.AutomationPeer.EnsureChildren() 在 System.Windows.Automation.Peers.AutomationPeer.UpdateChildrenInternal(Int32 invalidateLimit) 在 System.Windows.Automation.Peers.AutomationPeer.UpdateSubtree() 在系统。 Windows.Automation.Peers.AutomationPeer.UpdatePeer(Object arg) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 在 MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method,对象 args、Int32 numArgs、委托 catchHandler)
我查看了引发该异常的控件的源代码,我意识到这部分代码只有在调用静态方法时才能运行:
`AutomationPeer.ListenerExists()`
返回真。
为什么在所有其他系统上,调用
`AutomationPeer.ListenerExists()`
全部返回false,而在该Windows 2012服务器上它返回true?
有没有办法删除这些听众?
注意:我的应用程序是在发布模式下构建的。