Как приостановить блокирующий поток без устаревшего Thread.Suspend? - PullRequest
5 голосов
/ 27 ноября 2010

У меня есть поток, ожидающий TcpListener.AcceptTcpClient(), который блокирует , который я хочу приостановить время от времени.

Я читал о Monitor.Wait(...), но у меня есть толькоопыт работы с мьютексами, и если поток ожидает метод блокировки, он становится интересным.

Теперь, когда Thread.Suspend(...) устарел, как мне приостановить поток?

1 Ответ

2 голосов
/ 27 ноября 2010

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

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

...