protected void Button3_Click1(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
Thread drawThread = new Thread(new ThreadStart(GetSession));
drawThread.Name ="Thread"+(i+1);
drawThread.IsBackground = true;
listThread.Add(drawThread);
drawThread.Start();
}
}
public void GetSession()
{
......
CloseThread();
}
private void CloseThread(string temp)
{
foreach (Thread tempThread in listThread)
{
if (tempThread.Name == temp)
{
if (tempThread.IsAlive)
{ tempThread.Abort();
}
}
}
}
上面调用线程关闭是有问题的,请问当有多个线程执行时,怎么关闭执行GetSession()完毕的线程
{
for (int i = 0; i < 10; i++)
{
Thread drawThread = new Thread(new ThreadStart(GetSession));
drawThread.Name ="Thread"+(i+1);
drawThread.IsBackground = true;
listThread.Add(drawThread);
drawThread.Start();
}
}
public void GetSession()
{
......
CloseThread();
}
private void CloseThread(string temp)
{
foreach (Thread tempThread in listThread)
{
if (tempThread.Name == temp)
{
if (tempThread.IsAlive)
{ tempThread.Abort();
}
}
}
}
上面调用线程关闭是有问题的,请问当有多个线程执行时,怎么关闭执行GetSession()完毕的线程
MSDN上说在线程上调用Thread.Abort();
此方法时,系统在线程中引发 ThreadAbortException 以中止它。
Thread.Abort();是异常结束,并非正常结束啊。正常结束就应该是程序执行到线程底自动关闭回收。如果你担心资源不够,你可以建立线程池,这样你就有数了。