将同步代码(使用BinaryReader)转换为使用async / await for NetworkStream

时间:2014-01-24 17:51:22

标签: c#

我正试图找出如何使用Microsoft推荐的基于任务的异步/等待方法等待NetworkStream上的数据。

到目前为止,我只是循环,直到数据变得可用,这可能是不好的事情:

using (NetworkStream stream = client.GetStream())
{
    while (true)
    {
        if (stream.CanRead && stream.DataAvailable)
        {
            using(BinaryReader reader = new BinaryReader(stream))
            {
                byte data = reader.ReadByte();
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

此时所有建议都是NetworkStream.ReadAsync

result = new byte[1024];
var bytesRead = await SourceStream.ReadAsync(result, 0, result.Lengh);