(C# 新手)请看这两段代码(未全)
 代码一:
 Multi 为Button; private void Multi_Click(object sender, EventArgs e)
        {   
            Thread onther = new Thread(new ThreadStart(show));
            onther.Start();//如果在红线的两语句设置断点可以执行show方法,而直接运行(f5)则不会执行show方法,直接在f6后在debug目录执行也没有任何题,什么原因?
            onther.Abort();

        }
 private void show()//show 方法
        {
            MessageBox.Show("Message");
        }
///////////////////////////////////////////////////////////////////////////////////////////////
代码二:Multi 为Button; private Thread onther;
 private void Multi_Click(object sender, EventArgs e)
        {   
            Thread onther = new Thread(new ThreadStart(show));
            onther.Start();
        }
 private void show()//show 方法
        {
            MessageBox.Show("Message");
            onther.Abort();
        }
我的问题:
(我只是想一个线程任务结束后,结束该线程)
1,在代码段一中为什么会有这样的现象?怎样避免?
2,一个线程任务结束后,该怎样结束线程?就像代码二中的方法吗?还是其它方法?请告之,谢谢

解决方案 »

  1.   

    sorry,代码二中第四句为 other = new Thread(new ThreadStart(show));
      

  2.   

    代码一可能是你刚刚执行完就结束了线程,所以看不到结果,让线程在start之后sleep一下就能看到结果了,结束线程是用abort
      

  3.   

    你的疑问是:线程执行完后如何结束?
    其实线程随着执行的方法SHOW() 执行完后,会自动结束的。没必要去主动abort()它
    abort()是主要为了去结束没执行完的线程。我开始学时也有这样的困惑,多看看书就好了
      

  4.   

    Abort就ok了,如果你需要反复新建,销毁线程这样做效果不好.