我有一个程序,要进行比较复杂的递归及循环运算,没有用到多线程,就是在一个按钮的click事件中调用的函数,现在在执行的过程中我想点一个按钮停止执行,请问用什么代码?
如果以后用到多线程的话该怎么停止执行
小弟出来诈道,分不多,请大家帮忙

解决方案 »

  1.   

    用线程,有 Abort()方法,如果不用线程,就不知道了。
    关注....
      

  2.   

    to 现在在执行的过程中我想点一个按钮停止执行,请问用什么代码?方法是,加以停止标签,然后比较复杂的递归及循环运算中,去判断当时停止标签的状态,来决定是否继续进行计算。在button的click事件中,修改停止标签来关闭运算。但是要说的一点是,如果你的运算占的资源很多的话,那么button_click事件很难被系统响应。
      

  3.   

    to 如果以后用到多线程的话该怎么停止执行如果想安全结束的话,做法基本上和上面的方法一样,即设置停止标签,然后join线程结束;
    否则,你可以用线程的abort或者Application.ExitThread之类的来强行关闭线程。
      

  4.   

    Knight94(愚翁) 说得没错!
    建议使用BackgroundWorker + WaitDialog实现!如果在循环中确定窗体不会假死,就使用:
    bool StopFlag = false;for(int i=0;i<1000;i++)
    {
      if(StopFlag == true)break;//最好定义在顶级循环中允许停止,否则可能出现运算错误
      for(int j=0;j<10;j++)
      {
       //....
      }
    }btnStop_Click(...)
    {
      this.StopFlag = true;
      this.btnStop.Enabled = false;
    }