如何将数据从一种流方法传输到另一种流方法

时间:2017-10-15 06:59:02

标签: c# producer-consumer

我正在使用客户端库来从远程主机(Renci.SshNet.Sftp)读取和写入文件。上传和下载方法都是活动的 - 它们使用流,它们不返回Stream以供以后写入:

void SftpFile.UploadFile(Stream input, String path);    // Reads from input and uploads
void SftpFile.DownloadFile(Stream output, String path); // Downloads and writes to output

我想下载一个文件并将其上传到其他位置。

我的限制是:

  1. 由于防火墙限制,无法使用库的其他部分进行直接对等传输
  2. 中间缓存是一个坏主意,因为我不能保证有足够的空间。
  3. 我需要监控进度以便向用户报告。
  4. AFAIK我可以选择在它们之间运行两个线程和管道/缓冲数据(参见生产者/消费者问题)。

    这不是一个罕见的设计问题。我用Java等其他语言多次点击它。但这是我第一次用c#命中它。在其他语言中,我被迫编写自己的Stream类,作为两个线程之间的管道/缓冲区,并负责同步。

    c#有没有什么可以解决这个问题?或者有谁知道解决问题的任何第三方图书馆?

0 个答案:

没有答案