DataWriter / DataReader关系

时间:2018-10-25 20:09:06

标签: c# uwp

在阅读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始终为空吗?

1 个答案:

答案 0 :(得分:0)

因此,您要做的是处置阅读器,并将其设置为null。

这样做之后,您可以在finally块中执行相同的操作。 即使try失败并进入catch块,finally块也将始终运行。 因此无需

reader.DetachStream();
reader = null;

在您的try块中。 只需将其从try块中删除,您的代码库质量检查器将停止抱怨。