c# - 为多个消费者读取一次流

标签 c# inputstream

我们有几个(大)图像文件。我们想从这些文件创建缩略图,同时记录它们的 MD5 和。

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

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

我们如何做到这一点?

最佳答案

针对您的具体情况:

不是调用 md5.ComputeHash(stream),而是调用 new CryptoStream(stream, md5, CryptoStreamMode.Read)
此流将镜像原始流,但也会通过 MD5 哈希器传递它。
一旦流被读取到末尾,md5 实例将保存哈希。

关于c# - 为多个消费者读取一次流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29503396/

相关文章:

c# - 难以将字符串解析为 DateTime

c++ - 线程库的奇怪行为

c# - 将自定义调试信息传递给 Microsoft bot 框架模拟器

c# - 文本对齐

c# - 如何将 JavaScript 数组传递给 ASP.Net MVC Action 作为帖子的一部分

android - 通过网络/本地主机发送大文件

c++ - 我们如何在 C++ 中一次从 STDIN 扫描 100 个字节

java - FindBugs 不关心 InputStreams

java - 扫描仪对象对整数和字符串输入的行为不同

c# - 图片插入word文档后如何改变图片大小