【发布时间】:2018-10-25 20:09:06
【问题描述】:
在阅读此处https://docs.microsoft.com/en-us/uwp/api/windows.storage.streams.datareader 的文档后,我对这两者如何相互影响感到有些困惑。
如果我要在 writer 上 DetachStream 和 Dispose,那么 reader 最终是否为 null?我在代码库质量检查器中看到了这一点。
writer = new DataWriter(_device.OutputStream);
writer.WriteString(command);
await writer.StoreAsync();
writer.DetachStream();
reader = new DataReader(_device.InputStream);
IAsyncOperation<uint> taskLoad = reader.LoadAsync(10000);
taskLoad.AsTask().Wait();
var bytesToRead = taskLoad.GetResults();
var response = reader.ReadString(bytesToRead);
reader.DetachStream();
reader = null;
异常处理..
if (writer != null) {
writer.DetachStream();
writer.Dispose();
}
if (reader != null) {
reader.DetachStream();
reader.Dispose();
}
在这种情况下,显然 reader 始终为 null?
【问题讨论】:
-
写者和读者应该是两个不同的对象。我可以看看你在哪里定义作者和读者吗?
-
更新了帖子,整个事情都被 try/catch 包围了,我在 finally 块中进行处理。
-
除非您知道您正在阅读的文本是每个字符恰好一个字节(例如,它是纯 ASCII),否则您的代码将会崩溃。读取的字节数!= 要读取的代码单元数。