- 846 名前:デフォルトの名無しさん [2009/06/09(火) 16:32:02 ]
- 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の 使い方ってこれであってます?
|

|