为多个消费者读取一次流

时间:2015-04-07 23:46:34

标签: c# inputstream

我们有一些(大)图像文件。我们想要从这些文件创建缩略图,同时记录他们的MD5总和。

理想我们希望程序只读取一次这些文件,并且永远不会回头。但是,由于数据服务于两个消费者,虽然我们可以创建多个线程,但我们无法避免多次读取文件。

所以要求是:假设只读,只转发流,如何使用它来同时提供new Bitmap(stream)和拨打md5.ComputeHash(stream)? (解决方案应扩展到其他流消费者)

我们怎么做?

1 个答案:

答案 0 :(得分:1)

针对您的具体情况:

不要拨打md5.ComputeHash(stream),而是拨打new CryptoStream(stream, md5, CryptoStreamMode.Read) 此流将镜像原始流,但也将通过MD5哈希 将流读取到最后,md5实例将保留散列。