tcpClient tcp;
public NetworkStream ns;
public Queue<Byte> ReadQueue = new Queue<Byte>();
Byte[] ReadData = new byte[512];

public Test(string hostname, int port)
{
tcp = new TcpClient(hostname, port);
ns = tcp.GetStream();
ns.BeginRead(ReadData, 0, ReadData.Length, CBRead, ns);
}

private void CBRead(IAsyncResult ar)
{
NetworkStream ns = (NetworkStream)ar.AsyncState;
Int32 cnt = ns.EndRead(ar);
for (int i = 0; i < cnt; i++)
{
ReadQueue.Enqueue(ReadData[i]);
}
ns.BeginRead(ReadData, 0, ReadData.Length, CBRead, ns);
}


Queueを使ってやりたいことは大体こんな感じです。
延々とバックグラウンドで受信しているイメージです。
パフォーマンス的にどうなのかなあ、自前リングバッファの方がいいのかなあと言う疑問でした。

ちょっと質問からずれるのですが、連続してストリームを処理する場合のBeginReadの
使い方ってこれであってます?