.Net (4.0) には、1 つのスレッドがテキストを書き込み、もう 1 つのスレッドが読み取ることができる既存のクラスがありますか?
理想的には、次のような MemoryStream を使用します。
MemoryStream memStream = new MemoryStream();
TextWriter tw = new StreamWriter(memStream);
TextReader tr = new StreamReader(memStream);
//Consumer Thread
(new Thread(delegate()
{
while (true)
{
Console.WriteLine(tr.ReadLine());
}
})).Start();
// Producer thread
(new Thread(delegate()
{
while (true)
{
Thread.Sleep(1000);
tw.WriteLine(System.DateTime.Now));
}
})).Start();
これは機能しません。ストリームライターがストリーム内の位置を進め、シークで巻き戻さない限り、リーダーとライターの両方が位置ポインターに影響を与えて同時実行の問題が発生しない限り、リーダーには何も表示されないためです。
これはパイプまたはソケットで行うことができますが、どちらもやり過ぎです。ロック付きの RYO コードも同様に奇妙に思えます。