日期:2014-05-17  浏览次数:21317 次

(新手)C# 多线程编程中,线程为什么无法关闭?
       
 private void button1_Click(object sender, EventArgs e)
        {
            Thread th = new Thread(new ThreadStart(run));
            if (button1.Text == "开始")
            {
                button1.Text = "停止";
                th.Start();
            }
            else if (button1.Text == "停止")
            {
                th.Abort();
                button1.Visible = false;
            }
        }


最近刚接触线程编程,一些原理不是太清楚,上面代码想实现的是:第一次点击按钮,线程启动,进行一个无限循环。再次点击该按钮的时候,线程停止,循环也停止。不过测试了下,发现线程停不下来,一直在循环。不知道问题出在哪?新手勿喷。。。
多线程 C# 线程

------解决方案--------------------
你每次都是new一个新线程,之前创建的一直在那运行着
------解决方案--------------------
楼上正确。你可以定义全局线程变量。在线程循环中使用一个bool变更来控制结束循环,循环结束,线程工作也就结束了。
------解决方案--------------------
你的线程都是局部变量,应该过一阵子就会被GC给回收掉了。
------解决方案--------------------
 
 Thread th = new Thread(new ThreadStart(run));  
 private void button1_Click(object sender, EventArgs e)         {                         if (button1.Text == "开始")             {                 button1.Text = "停止";                 th.Start();             }             else if (button1.Text == "停止")             {                 th.Abort();                 button1.Visible = false;             }