Thread.Start no regresa en algunos casos escasos en mi aplicación C #

He escrito una aplicación de servidor TCP en c #. La aplicación escucha las conexiones entrantes

uso del método TcpListener.AcceptTcpClient () en el hilo principal del oyente.

Cuando se recibe una conexión, TcpListener.AcceptTcpClient () desbloquea y devuelve el objeto TCPClient.

l recibir una conexión, se crea un nuevo hilo y comienza a leer datos de escritura en una nueva conexión.

El nuevo hilo se inicia siguiendo el código.

while(true)
{
  TcpClient client = serverListener.AcceptTcpClient();


  if (client.Connected)
  {
    Thread t = new Thread(delegate() { readWriteData(client); });
    t.IsBackground = true;
    t.Start(); /// Problem happens here. The thread gets stuck here and doesn't move   further
  }
 }

La aplicación funciona bien, pero en algunas ocasiones en máquinas con Windows 7, la aplicación deja de escuchar conexiones tcp.

En el análisis de las pilas de subprocesos de la aplicación en este estado, (se utilizó el Explorador de pila de Microsoft para ver las pilas de todos los subprocesos de la aplicación), se encontró que el subproceso de escucha principal está atascado en la línea siguiente de la sección de código que se muestra arriba

 t.Start(); /// Problem happens here. The thread gets stuck here and doesn't move   further

Investigué mucho y no pude encontrar por qué está sucediendo. Este comportamiento se observa solo en los sistemas Windows 7.

¿Alguien puede ayudarme a resolver este problema?

Según lo sugerido por Rob,

Estoy publicando aquí el seguimiento de pila mostrado por windbg (sos)

0547eae0 7282e006 mscorwks!Thread::StartThread+0xc3, calling mscorwks!_EH_epilog3
0547eb00 727ac825 mscorwks!__SwitchToThread+0xd, calling mscorwks!__DangerousSwitchToThread
0547eb10 728b9c6f mscorwks!ThreadNative::StartInner+0x1ba, calling mscorwks!__SwitchToThread
0547eb58 727e4b04 mscorwks!SafeHandle::DisposeNative+0x3a, calling mscorwks!LazyMachStateCaptureState
0547ebc8 728b9d80 mscorwks!ThreadNative::Start+0xa6, calling mscorwks!ThreadNative::StartInner
0547ec18 728b9d01 mscorwks!ThreadNative::Start+0x1f, calling mscorwks!LazyMachStateCaptureState
0547ec74 71de6afc (MethodDesc 0x71c13048 +0x8c System.Threading.Thread.Start()), calling mscorwks!ThreadNative::Start
0547ec8c 030e2a46 (MethodDesc 0x30da408 +0x25e WindowsService.Server.startListener()), calling (MethodDesc 0x71c13048 +0 System.Threading.Thread.Start())

Respuestas a la pregunta(6)

Su respuesta a la pregunta