在你的
catch(SocketException ex)
{
    MessageBox.Show(ex.ToString());
}
语句下面加上
catch(ThreadAbortException ex)
{
    th.abort();//在捕捉到线程Abort异常后,再次尝试Abort线程
}