C#,如果用线程池,怎么样在线程池里面同时实例化100个线程出来取执行不同的任务?

注意,线程池里面的同时开始工作的线程数量是指定的,而不是自己根据需求来创建

第1个回答  2014-02-13
多线程啊,同步请求异步处理嘛,管它们是100个还是1000个,追问

哎,需求如此我也没办法,开启的线程数是个配置参数,程序必须同时开启N个线程来执行任务
我觉得直接实例化线程太损耗资源了,想用线程池来做,但是线程池我又不大会用....

追答

举个小例子,您可以参考一下.
private void Btn_1_Click(object sender, EventArgs e)
{

ts = new ThreadStart(Btn_1_thread);
threadop = new Thread(ts);
threadop.Start();
}
private void Btn_1_thread()
{
//........
}
private void Btn2_Click(object sender, EventArgs e)
{
ts = new ThreadStart(Btn2_thread);
threadop = new Thread(ts);
threadop.Start();
}
private void Btn2_thread()
{
//.........
}
.........................
希望对您有所启发。

c#线程池如何控制并发最大线程数
wait_main: 主程序线程的监听和等待,只有所有任务线程都执行完毕后,主程序线程才会退出程序。<c> list_Thread: 负责记录每次循环,CPU实际分配的系统线程的个数。和Monitor配合使用,Monitor.Enter(list_Thread)=占用共享线程资源的占用锁,Monitor.Exit(list_Thread)释放共享线程资源的占用锁。码:线程...

c#使用线程还是线程池更好一点
如果你不需要对线程进行太复杂的控制,只是启动线程后续基本不再对它进行什么操作的话,选 线程池。线程池会根据需要创建新的线程,也就是说线程池不一定会开一个新的线程,而使用前者是一定会新开一个线程。线程开得过多,程序的运行效率是会下降的。

请问C#中使用线程池,这样的使用方式(下图)正确吗?后台有三个方法需要...
1. 应用程序中线程把大部分的时间花费在等待状态,等待某个事件发生,然后给予响应。这一般使用 ThreadPool(线程池)来解决。2. 线程平时都处于休眠状态,只是周期性地被唤醒。这一般使用 Timer(定时器)来解决。ThreadPool 类提供一个由系统维护的线程池(可以看作一个线程的容器),该容器需要 Window...

C# 多线程问题
你的这个问题还真不好处理,线程套线程,还想等待全部完成,如果不想改设计的话,就使用ManualResetEvent这个对象,每次线程创建子线程时,都创建这个对象,保证所有的线程都执行完毕再将阻塞放开。(可采用计数方式,开始记录需要创建多少个线程,再记录一个变量(原子型)每个子线程完成时都将变量值加1,...

C# Threading.Timer 当执行的代码量很多的时候,如何实现
BackgroundWorker对象并在DoWork事件中添加对应的事件处理程序,这样时间到的时候新建一个该类实例,然后启动操作。等到处理完之后再从这一类中提取出具体数据。一般如果在主线程中timer的事件处理程序时间超过100ms,或者是它计时的1\/10长度的话,程序都会有点卡。所以最好是用其它线程处理这一个项目 ...

C#如何判断线程池中所有的线程是否已经完成
首先要看您的线程池是什么样子的线程池.是自己做的还是系统的ThreadPool 如果是系统的.那么很简单.您只需要判定当前线程池的逻辑线程是否是您的初始值即可.因为系统的线程池拥有可配置逻辑线程数量的功能.当启动一个子线程时他就会将逻辑线程-1.(如果是IO线程则判断IO线程个数)如果与默认值或设定值相同...

c#启动和结束线程的问题
1.对于ASP.net,在Session_Start里面启动线程是不好的设计,因为很多情况下(比如搜索引擎的爬虫抓取),每次访问都会导致新建一个Session,这样情况下线程很快会被用光的。ASP.net的页面处理全部依赖于线程池,而线程池中线程的数目和创建数量都是有限制的。2.一个线程应该有穷,也就是说执行完毕就应该...

C#线程池同一个时间跑10个线程怎么做
你有几个处理器核心,就能同时跑几个线程。同一个时间内能跑多少个线程,是受你处理器核心数限定的,跟软件无关。

C# 使用线程池设置每个线程的执行时间,怎样设置结束时间?
先建一个类下面的成员,来存放进程。List<Thread> pool = new List<Thread>();Thread t = new Thread(new ThreadStart(getHtmlContent));pool.Add(t);t.Start();给类加一个Timer。System.Timers.Timer timer = new Timer();timer.Interval = 30000;timer.Elasped += new EventHandler(this. ...

C# 使用线程池,设置每个线程的执行时间,过了时间强制结束
先建一个类下面的成员,来存放进程 List<Thread> pool = new List<Thread>();在需要启动你的方法的时候建进城 Thread t = new Thread(new ThreadStart(getHtmlContent));pool.Add(t);t.Start();给类加一个Timer System.Timers.Timer timer = new Timer();timer.Interval = 30000;timer.Elasp...

相似回答