现在我有一个StreamWriter和一个StreamReader,1个文件,其中包含(文本)数据,至少有2个线程。 1个线程是一个监听器并读取数据。另一个线程将内容写入流中。
我可以避免使用文件作为内存缓冲区吗?
我认为可以从两端连接2个流。但不知道怎么样。我创建写入该文件的编写器。然后我启动一个线程,创建一个读取该文件并完成其工作的读取器。它有效,但我想避免使用文件。
// writer
StreamWriter writer = new StreamWriter(new FileStream("text.txt", FileMode.Create, FileAccess.Write, FileShare.Read));
writer.AutoFlush = true;
// reader
StreamReader reader = new StreamReader(new FileStream("text.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
答案 0 :(得分:1)
我发布了一些我称之为ProducerConsumerStream
的内容。它是一个内存流,允许一个读者和一个作者。它是一个固定大小的循环缓冲区,允许消费者以生产者可以写的速度读取。请参阅Building a new type of stream。