日期:2014-05-18  浏览次数:20385 次

请大家帮忙 一个线程关闭的问题!
一个类中有两个方法
1.线程开始
void   start()
{
    Thread   tr   =   new   Thread(new   ThreadStart(send));
    tr.IsBackground   =   true;
    tr.Start();
}
2.线程关闭
void   stop()
{
    这里这么写呢?
}
问题   怎么在我的stop()方法内结束线程tr


------解决方案--------------------
线程执行完会自动销毁

强行结束用Thread.abort();
------解决方案--------------------
没用过线程,也不懂,,
帮顶
------解决方案--------------------
Thread tr;

void start()
{
tr = new Thread(new ThreadStart(send));
tr.IsBackground = true;
tr.Start();
}
2.线程关闭
void stop()
{
if (tr!= null)
{
if (tr.ThreadState != ThreadState .Aborted || tr.ThreadState != ThreadState.Stopped)
{
tr.Abort();
}
}
}

大概是这个样子吧,线程的状态判断可能写的不全
------解决方案--------------------
你要编多线程的程序? 发送封包? 你的程序不像C#类的编写方式.
class SendThread
{
private Thread tr;

public void start()
{
tr = new Thread(new ThreadStart(send));
tr.IsBackground = true;
tr.Start();
}
//2.线程关闭
public void stop()
{
if (tr!= null)
{
if (tr.ThreadState != ThreadState .Aborted || tr.ThreadState != ThreadState.Stopped)
{
tr.Abort();
}
}
}
}

然后外部用 SendThread st1= new SendThread();
st1.Start(); st1.stop();来调用。 不过多线程的貌似还要考虑其他东西,否则线程容易失去控制。
不是实例调用,都需要声明成static的。