C#中关于多个线程的启动与停止

for (int i = 0; i < 5; i++)
{
Thread ThrRun = new Thread(StartRun) ;
ThrRun.Start();
}

如上代码,我启动了5个线程,在程序运行的过程中 如何关闭其中的某一个线程呢?

希望代码对你有帮助
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
List<Thread> listThread = new List<Thread>(5);

Thread thread = null;
for (int i = 0; i < 5; i++)
{
thread = new Thread(new ThreadStart(p.ThreadMethod));
thread.Name = "Thread" + (i + 1);
Console.WriteLine("创建 Thread" + (i + 1));
listThread.Add(thread);
}

//关闭指定线程
foreach (Thread tempThread in listThread)
{
if (tempThread.Name == "Thread3")
{
Console.WriteLine(tempThread.Name + " 线程已关闭");
tempThread.Abort();
}
}

Console.ReadLine();
}

private void ThreadMethod()
{

}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-08
StartRun方法执行结束,线程就终止
也可以使用这两个方法终止线程,
th.Abort();
th.Interrupt()
但是,你的程序中Thread ThrRun 作用域在for中,
改改...

c#线程停止
c#线程停止方法:1.我们需要在C#代码中添加Thread类,就可以开始设置。2.然后我们就能在这里就能设置,设置ThreadStart类进行实例化。3.此时我们就可以在这里启动并且和状态在执行,这是前提。4.因此我们就可以在这里对Thread对象,进行中止操作。5.为了程序的友好性,我们可以在这里输出一条提示。6.此时我们运...

在C#中如何使用多线程,每隔几秒去执行一个方法?
\/\/ 线程停止运行的标志位.Boolean done = false;\/\/ 计数器 int count = 0;while (!done){ \/\/ 休眠1秒.Thread.Sleep(1000);\/\/ 计数器递增 count++;\/\/ 输出.Console.WriteLine("[静态]执行次数:{0}", count);} } \/\/\/ \/\/\/ 启动线程的代码.\/\/\/ public static void StartThread(){...

c#启动和结束线程的问题
从ThreadPool中直接取出一个新线程使用就可以了ThreadPool.QueueUserWorkItem() 函数来启动一个新的线程。或直接新建一个Thread然后启动它,但是这样如何去记录这个线程是有讲究的,也许你需要建立一个全局静态的字典来记录SessionID和对应的线程,然后在Session_End事件里面根据SessionID查找对应的线程。提示:1...

C#线程启动,暂停,恢复,停止怎么实现
public void 线程方法() { }public void 新线程(){ Thread td = new Thread(线程方法); \/\/新建线程,并设定线程开始的方法 td.Start(); \/\/启动线程 td.Suspend(); \/\/休眠线程 td.Resume(); \/\/恢复线程 td.Abort(); \/\/终止线程}满意请采纳,谢谢。

C# 停止线程的问题
你的代码逻辑我是这样理解的,遍历N个线程,如果线程状态不是stopped,就终止该线程 那你可以这样:private void Stop_Click(object sender, EventArgs e){ foreach (Thread threada in thread){ \/\/如果线程状态不为stopped,执行if里的业务逻辑代码 if (threada.ThreadState != ThreadState.Stopped){...

c#如何开始运行多分钟启动线程多少分钟之后后关闭
使用Timer类实现多分钟启动线程多少分钟之后关闭的步骤如下:1、可以使用Timer类来实现这一功能,Timer类提供了一个指定的时间间隔,在指定的时间之后,可以定期调用一个指定的方法。2、使用Timer类创建一个Timer对象,并设置要运行的时间间隔(以毫秒为单位)。3、在Timer对象的Timer.Elapsed事件处理程序中...

c# 线程 其他信息: 线程正在运行或被终止;它无法重新启动.
你先看下MSDN 上对abort方法的介绍 调用此方法后 线程不一定或者根本不中止 如果成功中止 那就可以重新start 了 如果没中止掉就start 的话 提示异常:线程正在运行或被终止;它无法重新启动。

c# 多线程 新开子线程中暂停,调用主线程控件,如何防止UI阻塞?_百度...
1.新开的线程是无法直接访问UI控件的,如果需要访问,可以通过控件的Invoke方法,或者用 System.Threading.SynchronizationContext.Current.Post方法 2.一定不要在控件的内部事件处理方法里面使用Sleep等线程暂停方法!像我这样写就不会阻塞了:private void button1_Click(object sender, EventArgs e){ System....

C#中的多线程问题用于什么地方?怎么掌握?
将通过调用任意一个存活中的后台进程的Abort()方法来彻底终止进程。6.挂起,睡眠(都可称为--阻塞,暂停)与Thread.Sleep 不同,Thread.Suspend 不会使线程立即停止执行。直到线程到达安全点之后它才可以将该线程挂起。如果线程尚 未启动或已经停止,则它将不能挂起。调用 Thread.Resume 将使另一个...

c#线程问题,创建一个线程,有两个方法,一个方法启动这个线程,另一个方...
} } \/\/\/ \/\/\/ 开始线程,注意一次只能开启一个. \/\/\/ 需要多个请用list扩展 \/\/\/ public void StartThread() { \/\/\/请根据情况设定清理条件 if (thread != null && thread.ThreadState == ThreadState.Running) { StopThread(); } thread = new ...

相似回答