NetworkStream の DataAvailable は信用ならない?

 System.Net.Sockets.NetworkStream で受信時に、データがまだある筈なのに DataAvailable が false を返してくると言うバグに30分程悩まされる。結局、Read の返り値で判断させることにしてみた。

NetworkStream  nsr = ...
int  nRes;
do {
    nRes = nsr.Read(...);
    ....
} while (nRes!=0 || nsr.DataAvailable);