In my code right now I have something like this:
state.BytesRead += readPacket.Result;
if (state.BytesRead < state.Data.Length)
{
Read(state);
}
else
{
nextRead(state);
}
然而,我注意到,第一个声明从未生效。 我试图做这样的事情,看看我是否甚至可以有以下条件:
tcpClient.SendBufferSize = 16;
tcpClient.ReceiveBufferSize = 16;
但是,它从来不行。 我在客户和服务器之间发送了大量数据(显示超高和高;长1 000个特性),但条件从来都没有。 它只想一劳永逸地读写。
Is this because I am using Task.Factory.FromAsync
and that it only completes upon reading in all the bytes? Here is the line of code that invokes the code snippet at the top of my post:
Task<int>.Factory.FromAsync(state.Stream.BeginRead, state.Stream.EndRead, state.Data, state.BytesRead, state.Data.Length - state.BytesRead, state);
我在从Ataync和所有辅导员之前都使用过同步的警示,以便进行所要求的检查,如果在接下来的读完所有 by子之前都读过。 难道这已不再需要从Ataync那里? 它现在是否自动处理?