Это, вероятно, потому что он ждет данных, которые повесят ваше приложение.
Возможно, вам придется использовать TcpListener
вместо этого и вызвать AcceptTcpClient()
при получении данных.
Далее, я всегда вызываю это в потоке или BackgroundWorker, чтобы интерфейс не зависал.
Если вам нужен TcpListerner, чтобы прекратить прослушивать TCP-соединение, вы должны вызвать метод Stop()
экземпляра.