WSACancelBlockingCall исключения

ОК, у меня странное исключение из моего кода, который давно беспокоит меня возрастов.

System.Net.Sockets.SocketException: A blocking operation was interrupted by a call to WSACancelBlockingCall
   at System.Net.Sockets.Socket.Accept()
   at System.Net.Sockets.TcpListener.AcceptTcpClient()

MSDN не очень предупредителен на это : http://msdn.microsoft.com/en-us/library/ms741547(VS.85).aspx и я даже не знаю, как начать поиск и устранение неисправностей этот один. Это только брошенный 4 или 5 раз в день, и никогда в нашей тестовой среде. Только в производственных площадках, и на ВСЕХ участках производства.

я нашел множество постов спрашивать об этом исключении, но не фактические окончательные ответы на каком именно модуле она происходит, и, как обрабатывать или предотвратить его.

код выполняется в отдельном фоновый поток, метод начинает :

public virtual void Startup()
    {
     TcpListener serverSocket= new TcpListener(new IPEndPoint(bindAddress, port));    
        serverSocket.Start();

после этого я запускаю цикл, поставив всех новых подключений в качестве рабочих мест в отдельном потоке бассейн. Оно становится более сложным, поскольку архитектура приложения, но в основном:

   while (( socket = serverSocket.AcceptTcpClient()) !=null) //Funny exception here
    {
         connectionHandler = new ConnectionHandler(socket, mappingStrategy);
         pool.AddJob(connectionHandler);
    }
  }

отсюда pool имеет собственные потоки, которые заботятся друг работу в собственном потоке отдельно.

я так понимаю, что AcceptTcpClient() представляет собой блокирующий вызов, и что-то winsock говорит нить прекратить блокирование и продолжить выполнение.. но почему? И что я должен делать? Просто перехватить исключение и игнорировать его?


Ну, я не думаю, что какой-то другой поток-это закрытие сокета, но это, конечно, не от моего кода.То, что я хотел бы знать: это гнездо закрыто подключение клиента (на другой стороне сокета) или это закрытая на мой сервер. Потому как именно в этот исторический момент, когда в этом возникает исключение, это shutsdown мне слушать порт, фактически закрыв службы. Если это делается из удаленного местоположения, то это большая проблема.

Alternatevly, это могло быть просто IIS сервер завершает работу своего приложения, и, таким образом, отменив все мои фоновые потоки и методы блокирования рекламы?

Найдено 4 ответа:

WSACancelBlockingCall exception

http://stackoverflow.com/questions/31871/wsacancelblockingcall-exception

Посмотреть решение →