使用 C#/.NET(Xamarin/Mono,真的)。
我有一个类,其方法 (A) 接受写入的流,
我还有另一个类,其方法 (B) 接受要读取的流。
我想要一个传递给 (A) 和 (B) 的流,这样当
(A) 写入流,数据可以由 (B) 读取。
已经有这样一个不使用操作系统管道的野兽了吗?
我会用阻塞收集 http://msdn.microsoft.com/en-us/library/dd267312%28v=vs.110%29.aspx。例如
BlockingCollection<int> bc = new BlockingCollection<int>();
Task.Run(() => new Reader(bc).DoWork());
Task.Run(() => new Writer(bc).DoWork());
public class Reader
{
BlockingCollection<int> _Pipe = null;
public Reader(BlockingCollection<int> pipe)
{
_Pipe = pipe;
}
public void DoWork()
{
foreach(var i in _Pipe.GetConsumingEnumerable())
{
Console.WriteLine(i);
}
Console.WriteLine("END");
}
}
public class Writer
{
BlockingCollection<int> _Pipe = null;
public Writer(BlockingCollection<int> pipe)
{
_Pipe = pipe;
}
public void DoWork()
{
for (int i = 0; i < 50; i++)
{
_Pipe.Add(i);
Thread.Sleep(100);
}
_Pipe.CompleteAdding();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)