我应该处置 IRandomAccessStream 还是底层 MemoryStream?

Should I dispose IRandomAccessStream or underlying MemoryStream?

以下哪个是正确的?

using (var memoryStream = new MemoryStream())
{
   var randomAccessStream = memoryStream.AsRandomAccessStream();
   process(randomAccessStream);
}

using (var randomAccessStream = new MemoryStream().AsRandomAccessStream())
{
   process(randomAccessStream);
}

我知道我可以直接使用 Windows.Storage.Streams.InMemoryRandomAccessStream(); 但我还是很好奇。理想情况下,带有解释的 MSDN 文章是最好的。

根据 AsRandomAccessStream 扩展方法的源代码,您不需要处理基础流。

您可以轻松地在磁盘上找到程序集 System.Runtime.WindowsRuntime.dll,并使用任何反编译器(例如 JetBrains dotPeek)查看其源代码。

AsRandomAccessStream 方法创建 NetFxToWinRtStreamAdapter class 的实例,它以适当的方式实现 IDisposable

void IDisposable.Dispose()
{
  Stream managedStream = this.managedStream;
  if (managedStream == null)
    return;
  this.managedStream = (Stream) null;
  if (this.leaveUnderlyingStreamOpen) //this flag is equal to false.
    return;
  managedStream.Dispose();
}