Как перехватить исключения в другом потоке, не затрагивая отладчик - PullRequest
0 голосов
/ 13 мая 2009

У меня есть служба 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 миллисекунду, потому что важно, чтобы я получил сообщение udp как можно скорее. Большую часть времени генерируется исключение сокета, потому что время ожидания сокета истекло. Это потому, что сокет настроен на тайм-аут:

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

К сожалению, когда я запускаю это, отладчик Visual Studio не позволяет мне шагать по коду. Он думает, что другой поток продолжает работать и не позволяет мне продолжить. Кто-нибудь видел это раньше? Кто-нибудь знает лучший способ получить из сокета, не имея дело с исключениями?

1 Ответ

0 голосов
/ 13 мая 2009

Вы пытались поместить условие отладки, которое изменяет время ожидания на бесконечное?

#if (DEBUG)
receivingSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 0);
#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...