私はネットワークストリームとコールバック関数newDataRecievedCallbackを読み込んでいるlisten()関数を持っています。これは非同期の読みですか?
私は非同期あるBeginReadメソッドを呼び出しますが、私は再びコールバック関数内で同じメソッドを呼び出します。それは同期ロジックですか?
これには別の方法がありますか?
private void listen()
{
networkStream.BeginRead(buffer, 0, buffer.Length, new AsyncCallback(newDataRecievedCallback), null);
}
private void newDataRecievedCallback(IAsyncResult rst)
{
try
{
int recievedDataSize = tcpClient.Client.Receive(buffer);
recievedData = convertToString(buffer, incomeDataSize);
//End Read
networkStream.EndRead(rst);
cleanBuffer();
parseXMLData(recievedData);
//Hier I call the same async method
networkStream.BeginRead(buffer, 0, buffer.Length, new AsyncCallback(newDataRecievedCallback), null);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
「BeginRead」は時には**同期的に**完了します。彼のコードはスタックオーバーフローの影響を受けやすい。 –
@Paul Sasik例が非常にいい – Racooon