在C#中如何关闭线程
我编了一个小程序。在一个button控件中启动了一个线程,我想在按下另一个button时,将此线程关闭。应该怎么做?在另一个button2中无法调用在button1中已经...
我编了一个小程序。在一个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()上有“未将对象引用设置到对象的实例”的提示。 展开
在另一个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()上有“未将对象引用设置到对象的实例”的提示。 展开
5个回答
展开全部
在C#中关闭线程,分两种情况:
第一种情况是关闭自己,可以使用System.Threading.Thread.CurrentThread.Abort();
Process.GetCurrentProcess().Kill()
Application.ExitThread();
不过以上方法,都是强制直接退出了整个程序,不只是关闭子窗体。
另外一种情况是关闭其它线程,要是关闭其它线程可以这样操作:在Thread
这个类里边写Close方法。然后。在private
void
button2_Click(object
sender,
EventArgs
e)里写thread.Close();就可以了。
所以要区分是关闭哪个进行,才可以选择对应的方法。
第一种情况是关闭自己,可以使用System.Threading.Thread.CurrentThread.Abort();
Process.GetCurrentProcess().Kill()
Application.ExitThread();
不过以上方法,都是强制直接退出了整个程序,不只是关闭子窗体。
另外一种情况是关闭其它线程,要是关闭其它线程可以这样操作:在Thread
这个类里边写Close方法。然后。在private
void
button2_Click(object
sender,
EventArgs
e)里写thread.Close();就可以了。
所以要区分是关闭哪个进行,才可以选择对应的方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
启动时记住此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();
}
}
调用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();
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
}
{
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
或者用this.dispose()释放掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询