最近写了一个COM与TCP,TCP与COM的通讯程序,是用多线程来处理的通讯过程:COM收到数据后转发给TCP,TCP再转发出去;或TCP收到数据转发给COM,COM再转发出去程序一开始运行时,收发数据都没有问题,但运行几天后,发现CPU的使用率占用的越来越多,
而且时间越久占用的就越多,检查了程序,各个循环或可能耗时的地方也都Sleep(1)了,对COM缓存也进行了清空处理,
不知道是什么原因?
望各位高手指点一二,解决马上给分结贴,在线等……
先谢谢了……

解决方案 »

  1.   

    1、对于支持IDispose接口的类,你程序中很多类都是集成自他的,改用using的自释放机制。2、检查是否有线程锁死的问题
      

  2.   

    1、通讯类创建类全局缓冲区,尽量不要在发送、接收处理时临时分配心空间。
    2、使用GC.Collect(),对不得已临时分配空间强制释放。
    3、实现IDispose接口,显示调用Dispose接口,加速托管资源释放。
    4、重写Object.Finalize 方法,理非托管资源。
      

  3.   

    1、通讯类创建类全局缓冲区,尽量不要在发送、接收处理时临时分配心空间。
    2、使用GC.Collect(),对不得已临时分配空间强制释放。
    3、实现IDispose接口,显示调用Dispose接口,加速托管资源释放。
    4、重写Object.Finalize 方法,理非托管资源。
      

  4.   

    sleep不能解决所有问题
    多线程同步操作 可以考虑用信号量 方式 阻塞线程