List<Thread> list = new List<Thread>();
for (int i = 0; i < 8; i++ )
{
ParameterizedThreadStart pts = new ParameterizedThreadStart(m);
Thread t = new Thread(pts);
list.Add(t);
t.ApartmentState = ApartmentState.STA;
t.Start(info);
}
所有的线程都是传入的同一个方法mprivate void m(object i)
{
//做一些操作,并且判断当时的情况,如果符合情况,就结束掉所有的线程
//...
if(符合情况)
{
for (int i = 0; i < list.Count; i++)
{
Thread t = list[i];
t.Abort();
}
}
}
但是现在不能马上结束掉所有线程。我分析原因是,这个结束线程的操作本身也是在一个线程中,100个线程是执行一会这个,再执行一会那个。所以,可能在本线程中只结束掉了10个,就又去执行其他线程了,很长时间后才能又到这个线程去结束掉剩下的90个,而这次可能又是只结束一部分。有没有方法能够立即结束掉所有的非主线程?
bool m_bIsEnd=false;结束线程时,将 m_bIsEnd改成true,即 m_bIsEnd=true;
在线程循环里加上一个判断
private void m(object i)
{
//做一些操作,并且判断当时的情况,如果符合情况,就结束掉所有的线程
//...
if(符合情况)
{
for (int i = 0; i < list.Count; i++)
{
if(m_bIsEnd)
return;
Thread t = list[i];
t.Abort();
}
}
}
你所说的判断,就是我写出的if(符合情况)。 请问如何区分两个线程是否是同一个线程,有相应的ID吗?