附加调试器时出现SEHException

时间:2017-09-26 14:10:24

标签: c# wpf debugging

这个问题相当复杂,我不确定如何解决它。我启动应用程序时遇到以下异常。

[FATAL] Unhandled exception. EXCEPTION OCCURRED:System.Runtime.InteropServices.SEHException External component has thrown an exception. Boolean CloseHandle(IntPtr)
[FATAL] Last Win32 error code: 00000006; Last HRESULT: 80070006

仅当我运行调试器时才会发生这种情况。如果我在没有调试器的情况下启动应用程序,那么它永远不会抛出SEHException。另一个事实是,当我继续它时,它会在Visual Studio中再次弹出,然后退出应用程序。

我现在已经设法将其缩小到这个:

Dispatcher dispatcher = Dispatcher.CurrentDispatcher;
InternalDispatcher = new WpfDispatcher(dispatcher);

它确实在构造函数调用 WpfDispatcher 之后发生。

internal WpfDispatcher([NotNull] Dispatcher dispatcher)
{
    _dispatcher = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher));
}
但是,我不知道为什么会发生这种情况。 WpfDispatcher - 类只是一个包装器,允许我使用WinForm或WPF进行调度,具体取决于所选的兼容模式。

为什么这只发生在附加的调试器上?代码已经存在了很长时间,而且这种情况最近才开始......

有没有办法缩小范围?我只是不知道为什么会这样。

PS:刚发生这种情况时检查了线程,看起来这个异常来自GC Finalizer线程:

Not Flagged >   4628    2   Worker Thread   GC Finalizer Thread mscorlib.dll!Microsoft.Win32.SafeHandles.SafeFileHandle.ReleaseHandle   Highest

PS2:激活本机调试器,我得到了这个(稍微)更详细的异常:

Exception thrown at 0xFE58917A in Lab.Wpf.exe: 0xC0000008: An invalid handle was specified.

0 个答案:

没有答案