本帖最后由 woyaoxiexieni 于 2012-11-01 01:32:58 编辑

解决方案 »

  1.   

    Threading.ThreadAbortException表示线程被Abort终止,要解决这个问题,你最好在关闭窗体之前先关闭线程,然后等到线程完全被关闭之后才关闭窗体,或者用Thread.IsBackground把线程设置为非背景线程,这样线程就会阻止窗体关闭,
      

  2.   

    首先关闭线程   System.Threading.Thread.CurrentThread.Abort();
                               或者           Process.GetCurrentProcess().Kill() 
                                或者        Application.ExitThread();
                                或者        Application.ExitThread()然后再关闭窗体 this.Close();
      

  3.   

    Thread.IsBackground=true;
    把线程设置为后台线程。然后关闭进程的同时,线程也会随之关闭。
      

  4.   

    子窗口close之前先关掉线程,关线程的方法知道吗?
      

  5.   

    1.System.Environment.Exit(0)和2.string[] args = Environment.GetCommandLineArgs();
                if (args.Length > 1)
                {
                    try
                    {
                        int exitcode = int.Parse(args[1]);
                        // System.Windows.Forms.Application.Exit();
                        System.Environment.Exit(exitcode);
                    }
                    catch { }方法有什么区别,exit中的exitcode有什么含义回答: 1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 2.Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出; 3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题; 4.System.Environment.Exit(0);   这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。  该属性可用于从应用程序返回成功代码。例如,它可用于控制在脚本中调用的一组应用程序的执行。如果应用程序没有设置该属性的值,则返回零。无论用户是否设置该属性,系统退出代码都会被设置为 main 函数的返回值;假如 main 返回 void,则设置为零