如何在C#中停止一个线程

时间:2014-08-09 12:30:38

标签: c# .net multithreading class methods

我创建了一个简单的C#表单应用程序,还有另一个类 Mouse_Tracking.cs

当我点击开始按钮时,线程启动并正常运行。但是当我点击停止按钮 没有任何反应

  

您能否帮我解决一下停止代码的问题。 :( :( :(

这里是Mouse_Tracking类的代码。

public class Mouse_Tracking
    {
        public int flag = 1;

        public void run()
        {
            while (flag == 1)
            {
                //Do Something
            }
    }

此处为开始按钮

的代码
private void btn_start_Click(object sender, EventArgs e)
    {
        var mst = new Mouse_Tracking();

        Thread thread1 = new Thread(new ThreadStart(mst.run));

        thread1.Start();
    }

此处为停止按钮

的代码
 private void btn_stop_Click(object sender, EventArgs e)
        {
            var mst = new Mouse_Tracking();

            mst.flag = 0;
        }

1 个答案:

答案 0 :(得分:4)

您没有在btn_start_Click中设置您创建的对象的标志。而是创建一个新的Mouse_Tracking对象并设置其值。使用相同的实例....

对于前任;

将其声明为

Mouse_Tracking mst = new Mouse_Tracking();

private void btn_start_Click(object sender, EventArgs e)
{
    mst = new Mouse_Tracking();
    .......
}

private void btn_stop_Click(object sender, EventArgs e)
{
     mst.flag = 0;
}