0

クライアントからサービスにファイルストリームの参照を渡し、サービスがストリームのダウンロードを開始した後、クライアント側から、これまでに読み取られたバイト数をどのように判断できますか (ファイルストリームオブジェクトを使用している間)。

私の目標は、このファイルに対してのみクライアントのアップロード速度を計算することであり、私が考えることができる唯一の方法はこれです。

4

1 に答える 1

4

FileStream を拡張するか、そのラッパーを作成します。読み取りメソッドをオーバーライドし、カウンターで読み取ったバイト数をカウントします。

拡張 (適切に実装されていませんが、説明するには十分すぎるはずです)

   public class CountingStream : System.IO.FileStream {

      // provide appropriate constructors

      // may want to override BeginRead too

      // not thread safe

      private long _Counter = 0;

      public override int ReadByte() {
         _Counter++;
         return base.ReadByte();            
      }

      public override int Read(byte[] array, int offset, int count) {
         // check if not going over the end of the stream
         _Counter += count;
         return base.Read(array, offset, count);             
      }

      public long BytesReadSoFar {
         get {
            return _Counter;
         }
      }
   }
于 2012-05-10T21:31:59.187 に答える