为了账号安全,请及时绑定邮箱和手机立即绑定

在C#中如何关闭线程

在C#中如何关闭线程

C#
MM们 2019-05-31 07:02:49
我编了一个小程序。在一个button控件中启动了一个线程,我想在按下另一个button时,将此线程关闭。应该怎么做?在另一个button2中无法调用在button1中已经实例化的线程。要怎么办?江湖少侠举的例子,我试过了,public Thread thread;private void button1_Click(object sender, EventArgs e){thread = new Thread(new ThreadStart(Method));thread.Start();}private void Method(){textBox1.Text = "sa"; }private void button2_Click(object sender, EventArgs e){thread.Abort();}结果在thread.abort()上有“未将对象引用设置到对象的实例”的提示。
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

启动时记住此thread.
调用thread.Abort();
*********************************************
补充:
看来你没理解局部变量和字段是什么。
class XXX
{
Thread thread;
void button1_Click(object o,EventArgs e)
{
thread = new Thread(new ThreadStart(Method)); }
void button2_Click(object o,EventArgs e)
{
thread.Abort();
}
}



查看完整回答
反对 回复 2019-06-01
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

线程没有实例化这个概念,只有启动,停止,暂停等方法, 每个线程都会有一个名字,调用每个线程的 Abort() 方法就可以停止该线程了。

补充:

你的变量名是在哪里声明的? 如果要在另一个按钮事件中也能访问,必须声明为类的变量。

查看完整回答
反对 回复 2019-06-01
?
绝地无双

TA贡献1946条经验 获得超4个赞

private void display()
{
while (ff == true)
{

}
}

void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "开始监控")
{
ff=true;
Thread a = new Thread(new ThreadStart(display));
a.Start();
button1.Text = "停止监控";
}
else
{
a.Abort();
serialPort1.Close();
button1.Text = "开始监控";
ff = false;
}
}



查看完整回答
反对 回复 2019-06-01
  • 3 回答
  • 0 关注
  • 4390 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信