クライアントからサービスにファイルストリームの参照を渡し、サービスがストリームのダウンロードを開始した後、クライアント側から、これまでに読み取られたバイト数をどのように判断できますか (ファイルストリームオブジェクトを使用している間)。
私の目標は、このファイルに対してのみクライアントのアップロード速度を計算することであり、私が考えることができる唯一の方法はこれです。
クライアントからサービスにファイルストリームの参照を渡し、サービスがストリームのダウンロードを開始した後、クライアント側から、これまでに読み取られたバイト数をどのように判断できますか (ファイルストリームオブジェクトを使用している間)。
私の目標は、このファイルに対してのみクライアントのアップロード速度を計算することであり、私が考えることができる唯一の方法はこれです。
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;
}
}
}