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

问题大致如题:线程代码之一:publicvoidThreadProc1(){while(true){ints=1;intu;switch(infoClass.IPmin)... 问题大致如题:
线程代码之一:
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个线程不行了
展开
 我来答
acherson
2012-08-02 · TA获得超过115个赞
知道小有建树答主
回答量:145
采纳率:100%
帮助的人:116万
展开全部
楼上正解,不过也可以自己写个线程池来管理和调度你的线程,你这种情况就是一下子运行太多线程的过,可以让线程以队列的形式一个一个执行,并发最好不要太多,CLR有线程管理和控制机制的,不能无限制的并发线程。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草薙在
2012-08-02 · TA获得超过4795个赞
知道大有可为答主
回答量:6187
采纳率:50%
帮助的人:6308万
展开全部
线程太多了,建议你使用应用程序池帮你管理线程,ThreadPool.QueueWorkItem
追问
除了使用线程池的办法外还有别的办法吗?
追答
你自己写一个线程池

现在已经不推荐直接操作线程了,不仅难维护,而且对程序性能也有损害,在.net4.0添加的TPL类库可以有效的帮你管理异步任务处理
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式