Невозможно прочитать данные из транспортного соединения: операция блокировки была прервана вызовом WSACancelBlockingCall - PullRequest
3 голосов
/ 06 марта 2012

Я разрабатываю клиент-серверное приложение для чата, и при закрытии окна клиента я столкнулся со следующим исключением.

Невозможно прочитать данные из транспортного соединения: операция блокировки была прервана вызовом WSACancelBlockingCall.

Есть идеи, в чем может быть проблема?

Ответы [ 2 ]

4 голосов
/ 26 апреля 2012

Если вы вызываете .Close () любого из вас, читателей или писателей, в основной поток.и попробуйте потом использовать этого читателя или писателя, тогда вы получите эту ошибку.

1 голос
/ 13 января 2013

после всех .Close(); вызовов также закройте темы, которые вызывают эти читатели / писатели.Как и в этом аналогичном обсуждаемом коде, проблему можно решить, просто добавив .Abort(); в двух местах, где .Close(); для потоков называется:

            swSender.Close();
            srReceiver.Close();
            tcpServer.Close();
            thrMessaging.Abort(); // this needed to be added to solve the problem
...