ふと現在製作中のソフトウェアにリジュームダウンロードの機能を追加したくなったのだが、
そのためだけにWebClientの適用をあきらめるのはもったいない。
というわけでWebClientを使用してリジュームダウンロードを行う方法を考えてみた。
○はじまり
├◇前回ダウンロードに失敗したファイルだ。 //中止も失敗として処理しているため。
|├◇受信済サイズが合計サイズより小さい。 //ここで前回中止されたことが確定する。
|||
||├①WebClientのHeaderプロパティにContent-Rangeフィールドを設定する。
||├②テンポラリファイルにダウンロードする。
├┘├③テンポラリファイルの内容をオリジナルファイルに追記してテンポラリファイルを削除する。
| ├④WebClientのHeaderプロパティのContent-Rangeフィールドをリセットする。
| │
├○普通にダウンロードする。
├―┘
○おわり
みたいな流れになるはず。
ストリームを取得してOpenReadで非同期に直接追記する方法もありかもしれない。