OneDrive の更新

タグの編集
投稿者 N88-Basic  (社会人) 投稿日時 2020/3/23 09:33:21
Windows 10 Home(Ver 1909) + Visual Studio 2019 + OneDrive 環境で運用しております。

ターゲットマシンは LTE 版の Surface 3 で運用しています。

ターゲット側での OneDrive の設定は
 (1)このデバイスが従量課金ネットワークのときに、同期を自動的に一時停止する -> 【オフ】
 (2)保存用のOneDriveフォルダーは「このデバイス上に常に保持する」に【チェック】

運用アプリの概要は、下記のようなものです。

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  CloseByTimer = True
  Me.Close
End Sub

Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing 
  If CloseByTimer = True Then
      Call SaveDatabaseOnOneDrive
      Shell("shutdown.exe /s /hybrid /t 0 ")
      Exit Sub
  End If
End Sub

上記アプリを実行した場合に、OneDrive への同期が行われません。
Surface を再起動すると同期が始まります。

同様のシャットダウンコマンド利用した自作の電源OFFアプリを有線LAN接続のマシンで実行すると、シャットダウン中に Onedrive への更新処理画面が表示され、更新が行われます。

状況が長くなりましたが、ターゲットマシン側のシャットダウン時に Onedrive との同期をとる方法をご存じでしたらご教授ください。

投稿者 N88-BASIC  (社会人) 投稿日時 2020/3/27 00:22:29
自己レスです。

テスト段階ですが、シャットダウン時のタイムアウトを設定することで Onedrive との同期がとれたようです。一応、60秒に設定してみました。

実際の環境にてテストしてみます。

投稿者 N88-BASIC  (社会人) 投稿日時 2020/3/29 23:42:21
自己レスです。

実際のデータにて二日分テストした結果、良好な結果が得られました。

最適解ではないかもしれませんが、一応、満足しています。

自己完結となりましたが今後ともよろしくお願いします。
投稿者 るきお  (社会人) 投稿日時 2020/3/30 08:40:46
情報提供ありがとうございます。

私はOneDriveに詳しくないのですが、この動作はローカルの更新がサーバーにアップデートされるタイミングという意味でおそらくプログラムというよりもOneDriveの仕様なんでしょうかね。

一般ユーザーとして使用する分には基本的に同期のことは気にしないでローカルのファイルのように読み書きすればいいですよというのがOneDriveのスタンスみたいに思っているので、普段あまり裏の仕様については気にしていませんでした。

一般ユーザーのインターフェースではなく、専用のAPIなど使えということなのかしれませんね。
https://docs.microsoft.com/ja-jp/onedrive/developer/rest-api/api/driveitem_put_content?view=odsp-graph-online
投稿者 N88-BASIC  (社会人) 投稿日時 2020/4/9 18:32:51
自己レスの追加報告です。

shutdown コマンドを利用してシャットダウンするアプリを自作して実行していますが、
有線LAN 接続の場合は、シャットダウンダウンに移行前に、OneDrive の更新中とのメッセージが表示され、待ち状態が生じます(強制的に更新をキャンセルできます)。

以上、ご参考まで