【发布时间】:2017-01-19 00:57:59
【问题描述】:
我正在尝试使用Stream.Synchronized 在两个 C# 操作之间发送字节以包装 MemoryStream。消费者每次执行 ReadByte 时,总是得到一个 -1,表示流已关闭。当我逐步使用调试器时,生产者正在调用 WriteByte。我从来没有得到任何关于消费者行为的数据。
static void Main(string[] args)
{
var memStream = new MemoryStream(100);
Stream dataStream = Stream.Synchronized(memStream);
Action producer = () =>
{
for (int i = 0; i < 256; i++)
{
dataStream.WriteByte(Convert.ToByte(i));
dataStream.Flush();
}
};
int total = 0;
Action consumer = () =>
{
int b;
do
{
b = dataStream.ReadByte();
if (b>=0)
total += b;
}
while (b < 255);
};
Parallel.Invoke(producer, consumer);
Console.Out.WriteLine("Total = {0}", total);
}
【问题讨论】:
标签: c# c#-4.0 visual-studio-2015 concurrency