我们有一些(大)图像文件。我们想要从这些文件创建缩略图,同时记录他们的MD5总和。
理想我们希望程序只读取一次这些文件,并且永远不会回头。但是,由于数据服务于两个消费者,虽然我们可以创建多个线程,但我们无法避免多次读取文件。
所以要求是:假设只读,只转发流,如何使用它来同时提供new Bitmap(stream)
和拨打md5.ComputeHash(stream)
? (解决方案应扩展到其他流消费者)
我们怎么做?
答案 0 :(得分:1)
针对您的具体情况:
不要拨打md5.ComputeHash(stream)
,而是拨打new CryptoStream(stream, md5, CryptoStreamMode.Read)
此流将镜像原始流,但也将通过MD5哈希
将流读取到最后,md5
实例将保留散列。