2017-01-17 21 views
1

以下哪项是正确的?我应该处置IRandomAccessStream还是底层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文章与解释将是最好的。

回答

0

根据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(); 
} 
相关问题