如何在不影响调试器的情况下捕获另一个线程上的异常

时间:2009-05-13 19:14:01

标签: c# visual-studio multithreading debugging

我有一个udp服务正在侦听udp数据报的套接字:

int result = 0;
try
{
  result = m_ReceivingSocket.Receive(buffer);
}
catch (SocketException e)
{
  Log.Debug("Timed out with socket exception, so no result was found.", e);
}

它每隔1毫秒在一个Timer上执行此操作,因为我尽快收到udp消息很重要。大多数情况下抛出套接字异常,因为套接字将超时。这是因为套接字设置为超时:

receivingSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000);

不幸的是,当我运行它时,Visual Studio调试器不允许我单步执行代码。它认为另一个线程继续运行,不会让我继续。以前有人见过这个吗?任何人都知道更好的方法从套接字接收而不处理异常?

1 个答案:

答案 0 :(得分:0)

您是否尝试过调试条件,将超时更改为无限?

#if (DEBUG)
receivingSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 0);
#endif