Abort是强行终止线程的,比如你所做的工作做了一半,突然不想做了就可以用它结束线程.
当线程所做的工作完成后就会自动结束,释放资源的,不用再用Abort()方法

解决方案 »

  1.   

    不需要手动去强制关闭线程,线程中执行完毕后会自动结束的(注意只是结束哦,其销毁如果不手动,是随主线程比如Form的销毁而销毁的)
      

  2.   

    定义一个代理,在abort前执行这个代理程序。
      

  3.   

    大家说线程执行完了以后会自行结束。
    但是我这个线程里有一个Timer,是循环执行的。我必须执行这个Timer.Stop()才行。
    大家再看看怎么样操作?
      

  4.   

    改为后台线程就可以了,自动关闭的不用理会th1。IsBackground=true;
      

  5.   

    不知道你的线程是怎么写的。因为线程有许许多多具体扩展类都已经扩展出强大的异步操作,直接使用就可以了。由于不知道你的线程是怎么写的,我抄袭msdn上一个最简的线程例子:
    http://msdn.microsoft.com/zh-cn/library/a9fyxz7d(VS.80).aspx
    做一点扩展。你可以实际去运行我写的这个demo程序,实际观察一下效果。using System;
    using System.Threading;public class ThreadWork
    {
        public event EventHandler<EventArgs> Stop;    public void DoWork()
        {
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("Working thread...");
                Thread.Sleep(100);
            }
            if (this.Stop != null)
                this.Stop(this, EventArgs.Empty);
        }
    }
    class ThreadTest
    {
        public static void Main()
        {
            ThreadWork task = new ThreadWork();
            task.Stop += new EventHandler<EventArgs>(task_Stop);
            ThreadStart myThreadDelegate = new ThreadStart(task.DoWork);
            Thread myThread = new Thread(myThreadDelegate);
            myThread.Start();
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("In main.");
                Thread.Sleep(10);
            }
            Console.WriteLine("主程序执行结束");
            Console.ReadKey();
        }    static void task_Stop(object sender, EventArgs e)
        {
            Console.WriteLine("线程任务触发了Stop事件。");
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("In task_Stop.");
                Thread.Sleep(100);
            }
        }
    }
      

  6.   

    其实你这个问题几乎不用动脑筋、凭手指的触觉就应该写出答案。凡是一个服务程序想通知自己的客户,但是并不确定客户具体是什么类型(用技术的话就是这个通知机制是在服务端定义的而不是在客户端定义的),这就是用事件或者Delegate(前者是后者的一种好用的特例)。事件通知,在软件设计中就像吃饭、喝水一样平平常常,但是由非常重要。初学编程的人,往往只看到一些狭隘的编程语句,而不重视总结和应用这些基本的设计思想。
      

  7.   


    按你这么说不是一个变量就可以了么?相当于用变量控制循环是否继续.
    if(变量)
     Timer.stop()