在我的C#/ WPF/.Net 4.5程序中,我正在尝试在套接字上执行Disconnect(),当我这样做时,我得到一个
System.dll中发生了'System.Net.Sockets.SocketException'类型的第一次机会异常
...在Visual Studio输出窗口中.
我的代码包含在try/catch中,但它永远不会落入catch中...
try { if (_TCPConn.Connected) { _TCPConn.Shutdown(SocketShutdown.Both); _TCPConn.Disconnect(true); // SocketException } } catch (Exception e) { . . . }
到目前为止,Socket工作正常 - 它用于与一些制造机器进行通信,所有这些工作都很完美.我在使用和不使用Shutdown()时尝试了相同的结果.如果我让程序在第一次机会异常后继续运行,整个程序就会消失并退出调试器.然后输出窗口中的消息说
程序'[0xE6C] ProcFacTest.vshost.exe:Managed(v4.0.30319)'已退出,代码为0(0x0).
我如何找出导致这种情况的原因?
第一步是禁用"Just My Code".这可能不是必需的,但IDE可能会将您的用户代码与系统代码混淆,从而抑制异常.我通常在进行异常调试时执行此操作
工具 - >选项 - >调试
取消选中"启用Justy My Code Debugging"
下一步是告诉Visual Studio在抛出该特定异常时中断.
调试 - >例外
展开"公共语言运行时异常",直到到达"System.Net.Sockets.SocketException"
检查此"异常"的"Thrown"