読者です 読者をやめる 読者になる 読者になる

しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

Live SDK で OneDrive のファイルをバックグラウンドデータ転送した場合の動作

Windows ストアアプリ C# Windows ランタイムアプリ

Live SDK の OneDrive API には通常のアップロード/ダウンロードの他に Windows ストアアプリのバックグラウンドデータ転送を利用した BackgroundDownloadAsyncBackgroundUploadAsync というメソッドがあります

バックグラウンドデータ転送はアプリが中断状態でもデータ転送が継続できるとの説明がありましたが、オフラインや中断とシャットダウン時はどうなるのかよくわからなかったので試してみました!

f:id:matatabi_ux:20140315222422p:plain

OneDrive API でバックグラウンドデータ転送を開始すると、VisualStudio 上の デバックの場所 ツールバーに実行中の転送スレッドが表示されるようです

これが表示されているかどうかで実行状態が把握できそうなので、オフライン、中断、中断とシャットダウンでどうなるか確認してみたところ、下記のようになりました

  • オフライン

    開始直後にオフラインだとキャンセル、少し経ってからだと一時停止(スレッド自体は残る)、オンラインになったら転送再開

  • 中断

    中断しても転送は継続

  • 中断とシャットダウン

    シャットダウンすると転送が途中で停止(スレッド終了)、アプリがアクティブになると途中から再開

中断とシャットダウンから復帰する場合も再開するところが便利ですが、この場合通常 await で待機した場合の戻り値や処理結果をどのように参照すればよいのかわかりませんでした;

BackgroundDownloader.GetCurrentDownloadsAsyncBackgroundUploader.GetCurrentUploadsAsync というそれっぽいメソッドで参照できるか試してみましたが無理でした;