一个多线程的软件.我目前是这样做的.应该有问题.但是对多线程来讲我是菜鸟.想请各位大大帮忙看看,指点一下.界面上一个按钮.
按钮事件是用的ThreadPool.QueueUserWorkItem来执行方法的.
方法里面是对多个服务器使用TCP发送数据.
进入方法以后,获取一些配置信息和组件字符串.还是使用ThreadPool.QueueUserWorkItem方法.对每一个服务器进行连接和通讯.每一个服务器一次会发送10条数据,每条数据的间隔是0.1秒;发完10条以后,停顿5秒
这里的服务器有12个.
12个循环完一次以后,停顿5秒.可是,,,数据我用其他机器做测试能接收到..但是,我这个东东.用着用着就突然自己给关了!!!!!!!
没报错,没异常..什么都没有/....很郁闷.是不是我那里弄错了..
还是怎么????顺便把我想要实现的功能说下.也许我设计的时候就有问题..
希望大大们不吝赐教~ 
点击按钮---->获取服务器信息和配置信息---->使用多线程,自动执行对所有服务器的通信(就是发送字符串数据).至于每台服务器发多少条,发一条停多久,都有服务器的配置信息决定.请大大们帮忙...很郁闷!

解决方案 »

  1.   

    ThreadPool不好控制,我都是用Thread。
      

  2.   


    但是,Thread好像只能开25个吧..  我这里至少有40个....
      

  3.   

    没听说过这回事,Google了下“默认情况下,每个系统处理器上最多可以运行25个线程池线程。超过该限制的其它线程会被排队,直至其它线程运行结束后它们才能开始运行。”
      

  4.   

    用线程池处理你发送信息的任务,主线程要停着啊,不做任何处理主线程跑完当然程序就关掉了具体可以参考WaitHandlerhttp://www.cnblogs.com/lexus/archive/2008/08/08/1263718.html
      

  5.   


    你所说的主线程停止.   是不是使用Thread.Sleep(int )?????主线程停止..???   嗯.... 貌似我间隔时间,就是用的Thread.Sleep..
      

  6.   

    和主线程有关系?我不这么认为,线程池是在UI线程上启动的,UI线程退出的话那程序就退出了,可是人家不可能手动关掉程序然后来这里问这个问题吧?关于这个问题我也碰过很多次,一般不是代码有问题,根本你的情况可能是在与服务器通讯的时候出现了什么异常,在IED环境下调试吧,大概就可以捕获到异常了