我用一个串口接收数据,然后通过软件发送到大概60个左右的客户端。发送客户端是通过TCP协议发送的。串口接收数据量比较大。
1,我曾经试过直接在串口接收事件中写一个for循环来向客户端发送数据。但是这样的话,假如网络不是很稳定,发送客户端数据时间势必会很长。而导致串口接收数据溢出,而使软件无响应。
2,后来我改成勇多线程去发送数据。收到一条数据,创建一个线程来发送。但是数据量大的时候导致“Thread Creation Error:存储空间不足,无法处理此命令”这样的错误,依然导致我的软件达不到我预期的效果!希望大家能够帮我想想办法。线程创建过多?那该怎么办,我怎么可以统计到线程的个数呢?或者说从总体角度考虑,有没有一个更好的解决方案!

解决方案 »

  1.   

    谢谢楼上,任务管理器中我监视了很久,没有出现内存持续增长的内存泄露现象。
    我的线程很简单的处理,就是一个for循环,发送到客户端,并且FreeOnTerminate := True;造成错误的概率我想应该会很小。
    我这个软件也不是说一开就报这个错,而是数据量大的时候我在debug软件中看到报的这个错!
      

  2.   

    tcp不好,发不出,串口接收不会停,导致积累的数据过多
    这样,多线程也会过多的啊看看tcp不好的时间大约是多久,期间串口会收到多少字节
      

  3.   

    to sz_haitao:不是说tcp不好,可能正常,但是数据量太大,就会导致发送数据延迟。而串口收到数据大小就似乎跟这个没关系了,其实串口收到一条数据的字节也不会太大。就是数量很多!to wintergoes没有动态创建什么指针之类的,我的线程就是一个循环发送。代码很简单。并且FreeOnTerminate := True,也就是说线程销毁的时候,连同里面的变量什么的一同释放的呀!
      

  4.   

    to tigerii:
    1.动态创建线程有何弊端呢?原因你还没说呢!
    2.你第二点的办法可以采取,能告诉我个好的方案么?
    3.这点意思不是很明白。
                期待回复