Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 如何在.Net4中模拟带有间歇数据的MemoryStream的串行流_C# 4.0_Stream - Fatal编程技术网

C# 4.0 如何在.Net4中模拟带有间歇数据的MemoryStream的串行流

C# 4.0 如何在.Net4中模拟带有间歇数据的MemoryStream的串行流,c#-4.0,stream,C# 4.0,Stream,我正在从事一个将使用SerialStream的项目。这是SerialPort.BaseStream。出于测试和一般数据模拟的目的,我有时想用MemoryStream替换该流 SerialStream是一个动态流。它将保持打开状态,连接的BinaryReader将愉快地阻塞ReadByte,直到下一个字节进入串行端口。这是一件好事 我的问题是MemoryStream它是一个固定的实体。您必须用数据预先填充它,重置基流的位置,然后开始读取。但现在您无法添加下一轮数据 是否有一个现有版本的Memory

我正在从事一个将使用
SerialStream
的项目。这是
SerialPort.BaseStream
。出于测试和一般数据模拟的目的,我有时想用
MemoryStream
替换该流

SerialStream
是一个动态流。它将保持打开状态,连接的
BinaryReader
将愉快地阻塞
ReadByte
,直到下一个字节进入串行端口。这是一件好事

我的问题是
MemoryStream
它是一个固定的实体。您必须用数据预先填充它,重置
基流的
位置,然后开始读取。但现在您无法添加下一轮数据

是否有一个现有版本的
MemoryStream
或一个可以让我模拟动态流的派生版本?我的目标是向解析例程传递一个流,它不知道串行端口、网络端口或内存管道的根本区别


我不断地回到基本问题上来,即如何使用内存流处理进程之间的连续数据消耗和供应。

不久前,我不得不做一些非常类似的事情,并提出了我称之为
ProducerConsumerStream
。基本上,它是一个带有
接口的循环队列。有了它,我可以将二进制读取器连接到一端,然后在另一端间歇性地添加数据。工作得很好


参见

谢谢你的文章。作为一种解决方法,我将ConcurrentQueue作为备用输入源移植到解析器线程对象。我将很快重新讨论这个问题,因为这是我一直在尝试做的事情。