Recently I have been faced to a quite unexpected behaviour of a software. One of its threads was indeed blocked without any error message nor exception. The issue was located in a piece of code in charge of managing exchanges between the software and a robot through a Tcp channel. I haven't found the exacte reason, but Windows (or the .Net framework), refuses my Tcp server starting a new thread (several ones have been already created for precedent messages sending).
It seams that the problem occurs after some minutes under Windows 10, and less often under Windows 7.
To solve this issue I prevent the creation of new thread to each message exchanges and reuse previously created one. That's all ;)