C#, C♯, C#相談室 Part52
■ このスレッドは過去ログ倉庫に格納されています
0846デフォルトの名無しさん
2009/06/09(火) 16:32:02public 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の
使い方ってこれであってます?
■ このスレッドは過去ログ倉庫に格納されています