IInputStream.ReadAsync()和DataReader.LoadAsync()仅适用于固定长度的读取(UWP C#)

时间:2018-10-29 20:03:17

标签: c# uwp

我正在与串行设备通信,我希望能够读取流中的数据。传入数据的长度将不固定。但是,上述功能仅在接收到“ count”个字节时才返回一个值。根据文档,当接收到任意数量的字节时,它应该返回,并将“计数”字节数加载到中间缓冲区中以进行读取。

IInputStream stream = EventHandlerForDevice.Current.Device.InputStream;
var buffer = new Byte[100];
IBuffer bufferResult = await stream.ReadAsync(
    buffer.AsBuffer(),
    (uint)buffer.Length,
    InputStreamOptions.Partial).AsTask().ConfigureAwait(false);

buffer = bufferResult.ToArray();
if (bufferResult.Length == 0)
{
    LoggingServices.Instance.WriteLine<App>("something ", LogLevel.Info);
} 

DataReaderObject.InputStreamOptions = InputStreamOptions.Partial;
bytesRead = await DataReaderObject.LoadAsync(ReadBufferLength);

这两个仅在接收到缓冲区长度字节数时返回。否则,只有当我传递1并处理每个字节的输入时,它才起作用。

0 个答案:

没有答案