我需要打开一个文件,计算它的 MD5,然后如果 md5 在 C# Winrt/Metro 应用程序中正确,则将其作为图像打开。
我遇到的问题是 WinRT 中的哈希类需要 IBuffers(从 FileIO.ReadBufferAsync(StorageFile) 返回,而图像类需要 RandomAccessStream(从 StorageFile.OpenReadAsync() 返回)。
显然,我可以两次打开文件并使用这两个调用,但这似乎效率很低。有没有一种简单的方法可以打开文件,我可以将流/IBuffer 传递给 MD5 HashAlgorithmProvider.HashData() 和 BitmapImage.SetSource() 函数。
我找到了我认为可以用来转换 IBuffer.AsStream() 的 RandomAccessStreamOverStream 函数,但找不到在 C# 中实例化它的方法。
有没有人对“正确”的方法有任何想法?我是 C# 的新手,并且很难理解为什么 Metro 中有两个看似不兼容的流/缓冲概念...... :(