IRandomAccessStream和RandomAccessStream有什么区别?

时间:2014-05-30 01:13:08

标签: c#

我使用以下代码保存最近拍摄的图像:

private async void Button_Click_2(object sender, RoutedEventArgs e)    
{    
   StorageFile photo = 
      await Windows.Storage.KnownFolders.PicturesLibrary.GetFileAsync("Image.jpg");    

  BitmapImage bmp = new BitmapImage();    
  using (IRandomAccessStream stream = await photo.OpenAsync(FileAccessMode.Read))  
  {  
      bmp.SetSource(stream);  
  }  
  img.Source = bmp;  
}  

IRandomAccessStream的用途是什么?用RandomAccessStream替换它会有什么不同?

1 个答案:

答案 0 :(得分:4)

令人困惑,因为他们有相似的名字。它们是相关的,但并不像人们想象的那样。

RandomAccessStream是一个静态助手类。

IRandomAccessStream是所有Concreete随机访问流实现的接口,例如FileRandomAccessStreamInMemoryRandomAccessStream

这意味着它们不可互换。您使用RandomAccessStream执行操作,即在其他流的两个实例之间复制数据。

photo.OpenAsync将返回FileRandomAccessStream,但除非您需要具体类提供的特定功能,否则通常应该坚持使用接口编程IRandomAccessStream