在阅读https://docs.microsoft.com/en-us/uwp/api/windows.storage.streams.datareader此处的文档后,我对这两者如何相互影响感到困惑。
如果我要在作家上进行DetachStream并处决,那么读者最终会为空吗?我在代码库质量检查器中看到了此标记。
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始终为空吗?
答案 0 :(得分:0)
因此,您要做的是处置阅读器,并将其设置为null。
这样做之后,您可以在finally块中执行相同的操作。 即使try失败并进入catch块,finally块也将始终运行。 因此无需
reader.DetachStream();
reader = null;
在您的try块中。 只需将其从try块中删除,您的代码库质量检查器将停止抱怨。