【问题标题】:How to read and write to a stream at the same time [closed]如何同时读取和写入流[关闭]
【发布时间】:2014-05-23 20:03:16
【问题描述】:

我有一个线程正在读取一个流,同时将数据从另一个线程写入流。

问题是读取线程立即退出,因为它认为流中没有更多数据了。

【问题讨论】:

  • 流代表什么?一份文件?如果是这样,您使用了错误的工具进行进程间通信。使用命名管道之类的东西,它可以让您生成专门为这些目的设计的流。
  • @Servy 流是通过 http 请求传入的音频。
  • 那一定是线程间通信,而不是进程间通信。两者之间有一个世界。内存流只能单个进程中访问。
  • @Servy 通过“进程”我的意思是一个线程
  • 两者之间存在巨大的差异。

标签: c# stream


【解决方案1】:

您可以使用BlockingCollection 来表示从一个线程到另一个线程的信息管道。生产线程将数据(在这种情况下为字节或字节块)写入集合,而另一个线程读取该数据。 BlockingCollection 类将负责所有需要的同步。

然后,您可以将集合标记为“已完成”以指示不再写入更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多