私はインターネットを介して大きなファイルを転送するためにストリーミングモードでWCFサービスを実装しました。WCFファイルストリーミング - タイミングの問題
これまでのところ、とても良いです。
統計的な理由から、転送にかかる時間と転送されたサイズを記録します。サイズは問題ではありませんが、転送時間を追跡するのはちょっと難しいです。
私の必要に応じて、私はMemoryStreamから派生したDownloadStreamクラスを実装しました。 このクラスには2つのイベントがあります。最初のイベントは開始読み込みによってトリガーされ、2番目のイベントは終了読み込みによってトリガーされます。それはうまく動作します。 http://www.danflash.com/files/code/DownloadStream.txt
しかし、クライアント(WCFクライアント)がWCFメソッドを呼び出してストリームを取得すると、奇妙なことが起こります。 クライアント側では、ストリームの参照を取得し、それを順番に読み取ることができます。つまり、私はストリームから読み終えるまでに時間を取ってから、転送の時間を得ることができます。
しかし、私がサーバー側でそれをやろうとすると、クライアントが読み込みを開始する前にストリーム全体が自動的に読み込まれます。ストリームコンテンツがメモリにコピーされるようです。
サーバー側で転送時間を追跡する方法はありますか?