Thread Thread1;
private void but_Click(object sender, EventArgs e)
{
if(Thread1==null || !Thread1.IsAlive)
{
    Thread1 = new Thread(new ThreadStart(U1_LoadPvcPro));
    Thread1.Start();//第一次进入按键时就开始线程
 }
else
{
    Thread1.Abort()//第二次进入按键时就结束线程
}
}

解决方案 »

  1.   

    想做的更好一点
    你需要在线程里委托改变按钮的Text,启动时设置它为"停止",执行完毕时设置它为"开始"
    否则按钮的文本不变,你点来点去的也没法知道后台线程到底运行了还是没运行
      

  2.   

    想要在程序关掉后自行结束线程,请把Thread的Backgroud属性设置成true
      

  3.   


    1,我上网查了查 发觉委托有很多种,不太会,可不可以给点码?(哈哈 可耻了)2,如果实在不行就传From的指针进去 用From指向but.text,这样也行吧?!
      

  4.   

    1,我上网查了查 发觉委托有很多种,不太会,可不可以给点码?(哈哈 可耻了)
    2,如果实在不行就传From的指针进去 用From指向but.text,这样也行吧?!
    搜一搜:委托操作UI,能搜到一大堆
    或者实在懒得研究,直接拖个timer进来,设置成100ms执行一次,里面判断线程的状态,并修改文本
      

  5.   

    需要捕获ThreadAbortedExceptiontry{
     Thread1.Abort()//第二次进入按键时就结束线程
    }catch(ThreadAbortedException)
    {}另外,想说一句,这已经什么年代了还用Thread, TPL都已经出来这么长时间了....