2017-01-17 18 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(); 
} 
相關問題