public void StopServer()                   //关闭服务
{
         try
{
if(objTcpListener!=null)
objTcpListener.Stop();
if(tMain!=null)
if(tMain.ThreadState==ThreadState.Running)
{
tMain.Abort();
}
}
catch(Exception ex)
{
}
}
调用这个函数,catch块里什么都不写,为什么总是出现“线程被中止”?
怎样不让它弹出这个框?或者如何安全关闭这个线程?
谢谢。

解决方案 »

  1.   

    你在catch(Exception ex)
    {
    }
    設個斷點,看看程序是不是執行到這了,如果catch中什麼都不寫,不會出現“线程被中止”,這句話的。
      

  2.   

    是这样的, 线程本来是被设计为执行完毕自我终结的. 如果要人工干涉它停止,它就会扔出这样一个异常.而且这个异常不能被阻止,即使你catch,它也会在catch块里面重新抛出同样的异常,直到异常到达程序的最顶层,然后线程中断.这是线程中止的基本原理.
      

  3.   

    不要用tMain.Abort();
    最好用join()中止线程
      

  4.   

    用Join()报错说一个封锁被WSACancelBlockingCall的调用中断?
    谢谢sunrobust的讲解,能告诉我具体该怎样解决吗?我初次用到线程,不太明白。