Windows窗体应用程序,线程不会停止

时间:2012-10-15 11:18:16

标签: c# winforms multithreading abort

我正在使用Windows Form应用程序进行线程演示。当我点击button1时,它将启动线程并递归地进行工作。

此处表格不会像我预期的那样挂起。我想在单击Button2时停止当前运行的线程。但这不起作用。

        private void button1_Click(object sender, EventArgs e)
        {
            t = new Thread(doWork);          // Kick off a new thread
            t.Start();               
        }

        private  void button2_Click(object sender, EventArgs e)
        {                
            t.Abort();
        }    

        static void doWork()
        {    
            while (true)
            {
              //My work    
            }
        }
      }

。当我调试时,button2_Click方法不会命中指针。我想因为Thread一直很忙。

如果我在某个地方出错,请纠正我。

1 个答案:

答案 0 :(得分:7)

你不能像这样杀死线程。原因是要避免在线程中添加锁定然后在释放锁定之前将其锁定的情况。

您可以使用它创建全局变量并控制线程。

简单样本:

private volatile bool m_StopThread;

private void button1_Click(object sender, EventArgs e)
{
    t = new Thread(doWork);          // Kick off a new thread
    t.Start();               
}

private  void button2_Click(object sender, EventArgs e)
{                
    m_StopThread = true;
}    

static void doWork()
{    
    while (!m_StopThread)
    {
          //My work    
    }
}