可以试试用Socket.Poll来检测是否有连接请求。
由于下例每次Poll只检测500毫秒,最多延迟半秒就能检测到isbreak的改变:
TcpListener listener = tl;while ( !isbreak )
{
    if (listener.Server.Poll(500*1000, SelectMode.SelectRead))       //<--
    {
        TcpClient client = listener.AcceptTcpClient();
        tclist.Add( client ); 
    }
}