protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null) 
{
components.Dispose();
}
}
base.Dispose( disposing );
thread.Abort ();//thread是你创建的线程;在这里加上它的abort
}

解决方案 »

  1.   

    private void Form1_Closed(object sender, System.EventArgs e)
    {
    Thread.CurrentThread.Abort();
    }
      

  2.   

    窗体跟窗体里启动的线程是两个相互独立的线程,关闭窗体的操作只是关闭了窗体所在的线程,在窗体里启动的线程必需手动地关掉它(调用该线程的Abort()方法)。
    假设你在窗体里启动线程的代码为:
     myThreadStart=new ThreadStart(objX.StartListen);//objX.StartListen为线程要执行的代码。
     myWorkerThread0=new Thread(myThreadStart);
     myWorkerThread0.Start ();
    要在关闭窗体时停止myWorkerThread0线程(调用Abort方法),如下:
     myWorkerThread0.Abort();
      

  3.   

    上面的分析的很对,既然你的进程里面还有线程,你的进程肯定不会结束;
    调用
    yourThread.Abort();
      

  4.   

    加一句:yourThread.IsBackground = true;,就不用担心这些问题了。