c#编写了一个多线程程序但是出现40个线程同时运行就自动关闭程序但如果只调用39个线程就不会出现这个问题

问题大致如题:
线程代码之一:
public void ThreadProc1()
{
while (true)
{
int s = 1;
int u;
switch (infoClass.IPmin)
{
case "101":
u = 100 + s;
che(u, s);
break;
case "151":
u = 150 + s;
che(u, s);
break;
case "201":
u = 200 + s;
che(u, s);
break;
}
Thread.Sleep(1000);//将当前进程阻塞指定的毫秒数
}
}
线程调用方法:

Thread t1 = new Thread(new ThreadStart(ThreadProc1));
t1.Start();
调用的方法没错,39个线程就能完好运行,就第40个线程不行了

第1个回答  2012-08-02
楼上正解,不过也可以自己写个线程池来管理和调度你的线程,你这种情况就是一下子运行太多线程的过,可以让线程以队列的形式一个一个执行,并发最好不要太多,CLR有线程管理和控制机制的,不能无限制的并发线程。
第2个回答  2012-08-02
线程太多了,建议你使用应用程序池帮你管理线程,ThreadPool.QueueWorkItem追问

除了使用线程池的办法外还有别的办法吗?

追答

你自己写一个线程池

现在已经不推荐直接操作线程了,不仅难维护,而且对程序性能也有损害,在.net4.0添加的TPL类库可以有效的帮你管理异步任务处理

本回答被提问者采纳
相似回答