2011-12-20 3 views
0

まず、NamedPipeClientStreamに書き込んだ後、そこから読み込みます。これは基本的に動作します。しかし、私はStreamReaderとStreamWriterのリソースハンドリングを正しく取得できません。同じパイプ上で動作するストリームのためのRessource処理

アプローチ1

using (StreamWriter sw = new StreamWriter(pipeStream)) 
{ 
    // ... 
    using (StreamReader sr = new StreamReader(pipeStream)) 
    { 
    // ... 
    } 
} 

ストリームがすでに閉じられているので、swの処分は、失敗します。

アプローチ2

using (StreamWriter sw = new StreamWriter(pipeStream)) 
{ 
    // ... 
} 
using (StreamReader sr = new StreamReader(pipeStream)) 
{ 
    // ... 
} 

別のプロセス闘争における今パイプサーバ、パイプ接続が早まって閉鎖されたためです。 another question regarding file streams

アプローチ3

それは、リーダライタのために別のストリームを使用することが示唆されました。しかし、これは適用できません。両方が同じパイプインスタンスを使用するためです。

このような状況で、ストリームはどのように正しく管理されていますか?

+0

はい、StreamReader/Writer.Dispose()メソッドはパイプストリームを閉じます。まれにあなたが望むものですが、* using *ステートメントを使用しないでください。どちらのクラスも廃棄を必要とする他のリソースはありません。 –

答えて

0

FileStreamを使用して、1つのストリームの読み込みと書き込みの両方を処理できないのはなぜですか?

関連する問題