以下哪一项是正确的?
using (var memoryStream = new MemoryStream())
{
var randomAccessStream = memoryStream.AsRandomAccessStream();
process(randomAccessStream);
}
或
using (var randomAccessStream = new MemoryStream().AsRandomAccessStream())
{
process(randomAccessStream);
}
我知道我可以直接使用Windows.Storage.Streams.InMemoryRandomAccessStream();
,但无论如何我很好奇。理想情况下,带有解释的MSDN文章最好。
答案 0 :(得分:1)
根据AsRandomAccessStream扩展方法的源代码,您不需要处理底层流。
您可以在磁盘上轻松找到程序集System.Runtime.WindowsRuntime.dll
,并使用任何反编译器(例如JetBrains dotPeek)查看其源代码。
AsRandomAccessStream方法创建一个NetFxToWinRtStreamAdapter
类的实例,以适当的方式实现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();
}