防止TcpClient.Connect出现首次机会异常



我的代码中有一条非常令人沮丧的First Chance Exception消息。

System.dll中发生类型为"System.Net.SocketException"的首次机会异常附加信息:由于目标机器主动拒绝,无法建立连接">

private void RunThread()
{
do
{
TcpClient client = null;
StreamWriter writer = null;
try
{
// Connect
client = new TcpClient();
client.Connect(m_Hostname, m_PortNum);
if (client.Connected) //No host available? EXCEPTION!
{
//Do stuff and exit listener thread
}

}
catch (Exception e)
{
//dont care
}
} 
}

现在简单解释一下。有问题的代码位于线程中

1) 这是一个令人愉快的可忽略的错误!我们可以继续。但问题是,我必须禁用第一次机会异常(其他人也是如此),应用程序才能继续。

2) 好的,假设我们禁用错误。这很好,但因为在一个线程中不断地遇到异常。我们明白了。当想要查看调试窗口时,这会变得非常烦人。

System.dll中发生类型为"System.Net.SocketException"的首次机会异常System.dll中首次出现类型为"System.Net.SocketException"的异常System.dll中首次出现类型为"System.Net.SocketException"的异常System.dll中首次出现类型为"System.Net.SocketException"的异常System.dll中首次出现类型为"System.Net.SocketException"的异常System.dll中首次出现类型为"System.Net.SocketException"的异常System.dll中首次出现类型为"System.Net.SocketException"的异常System.dll中首次出现类型为"System.Net.SocketException"的异常System.dll 中首次出现类型为"System.Net.SocketException"的异常

问题

  1. 我可以轮询目标主机而不抛出异常吗?

  2. 如果没有,我可以禁用此断言吗?有办法绕过这个吗?

您尝试过DebuggerNonUserCode属性吗?https://msdn.microsoft.com/en-us/library/system.diagnostics.debuggernonusercodeattribute.aspx它应该防止调试器遍历该方法,这样您就不会收到通知。

相关内容

最新更新