ストリームに書き込むdllを呼び出しています。dll内のメソッドのシグネチャは次のようになります。
public bool SomeMethod(Stream stream);
そのメソッドは基本的にそのストリームにバイナリデータを書き込みます。したがって、そのメソッドを次のように呼び出す場合:
var file = System.IO.File.Create("SomeFile.txt");
/* call dll method */ SomeMethod(file);
次に、基本的にそのファイルに出力を書き込みます。この質問では、出力をnetworkStreamに書き込んでいます。
とにかく、質問に戻ります。自分でストリームを作成したいのは、いつイベントが発生するのか知りたいからです。たとえば、独自のストリームクラスを作成する場所を次のようにするとします。
class MyStream : Stream
{
private long Position;
public override int Read(byte[] buffer, int offset, int count)
{
// implementation goes here
/* HERE I COULD CALL A CUSTOM EVENT */
}
public override long Seek(long offset, SeekOrigin origin)
{
// SAME THING I WILL LIKE TO PERFORM AN ACTION IF THIS METHOD IS CALLED!
}
// etc implement rest of abstract methods....
そのストリームの出力をネットワークに書き込んでいるので、何らかのイベントが発生した場合は速度を落としたいと思うかもしれません。dllを制御できる場所があれば、これを実装しようとはしません。
抽象Streamクラスの抽象メソッドを実装する方法の非常に基本的な例を誰かに教えてもらえれば幸いです。