API を使用BackgroundUploadAsync
して OneDrive にファイルをアップロードしています。ほとんどの場合、関数は正常に動作しますが、呼び出しで次のエラー メッセージが返されることがあります。
以前のバックグラウンド アップロードでシステムがビジー状態です...
アプリケーションを閉じて再起動しようとしましたが、まだ同じエラーが発生します。
なぜそれが起こるのですか?OneDrive との接続を再初期化するにはどうすればよいですか?
アップロードを行うコードは次のとおりです。
public static async Task<string> BackgroundUploadFile<T>(
string skydriveFolderId,
T objectToSerialize,
string fileNameInSkyDrive,
BackgroundTransferPreferences backgroundTransferPreferences =
BackgroundTransferPreferences.AllowCellularAndBattery)
{
string fileId = string.Empty;
try
{
var storageFolder = await GetSharedTransfersFolder();
StorageFile isolatedstorageFile = await storageFolder.CreateFileAsync(
fileNameInSkyDrive,
CreationCollisionOption.ReplaceExisting);
using (var writer = new StreamWriter
(await isolatedstorageFile.OpenStreamForWriteAsync()))
{
// convert to string
var _String = Serialize(objectToSerialize);
await writer.WriteAsync(_String);
}
Client.BackgroundTransferPreferences = backgroundTransferPreferences;
LiveOperationResult liveOpResult = await Client.BackgroundUploadAsync(
skydriveFolderId,
new Uri("/shared/transfers/" + fileNameInSkyDrive, UriKind.Relative),
OverwriteOption.Overwrite);
fileId = (string)liveOpResult.Result["id"];
Debug.WriteLine("BackgroundUploadFile: " + fileNameInSkyDrive);
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Upload Error", MessageBoxButton.OK);
Debug.WriteLine("\nError - BackgroundUploadFile: " + e.Message);
}
return fileId;
}
また、「スタック」しているバックグラウンド タスクがあり、OneDrive がそれらを解放/解放しないため、OneDrive がアカウントをロックしている「疑い」があります。