今天碰到一个问题。运行的时候Server和Client端可以正常通讯,但是调试的时候去在Stream.Read()那里卡死。看Client端的代码,发现有很多的thread.Sleep()操作。于是把Thread.Sheep()中的参数值调大了些,向networkStream中写数据不像过去那么快,结果调试就pass了。百思不得其解,瑞军老大说:“StreamRead是不是同一个?”就这一句话解决了JAME(j2me 自动化测试框架)多个月来的稳定问题。原因在于用同一个NetworkStream New出多个StreamReader。一旦有一个StreamReader实例调用的一次Read()函数。那么它将把当前缓存区中的内容全部都拿到自己的私有缓存区中。用微软的refactor工具看的源码 :) ,那么另外的StreamReader实例就不可能再得到缓存区的内存。其结果就是在Read()处挂死。
C# network stream
最新推荐文章于 2024-07-23 14:15:04 发布