(生手)C# 多线程编程中,线程为什么无法关闭
(新手)C# 多线程编程中,线程为什么无法关闭?
最近刚接触线程编程,一些原理不是太清楚,上面代码想实现的是:第一次点击按钮,线程启动,进行一个无限循环。再次点击该按钮的时候,线程停止,循环也停止。不过测试了下,发现线程停不下来,一直在循环。不知道问题出在哪?新手勿喷。。。
------解决方案--------------------
你每次都是new一个新线程,之前创建的一直在那运行着
------解决方案--------------------
楼上正确。你可以定义全局线程变量。在线程循环中使用一个bool变更来控制结束循环,循环结束,线程工作也就结束了。
------解决方案--------------------
你的线程都是局部变量,应该过一阵子就会被GC给回收掉了。
------解决方案--------------------
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; } }