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

dev*_*van 0 c# multithreading abort winforms

我正在使用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    
            }
        }
      }
Run Code Online (Sandbox Code Playgroud)

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

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

Ler*_*eri 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    
    }
}
Run Code Online (Sandbox Code Playgroud)