6

Windows 10 ユニバーサル アプリで次のコードを使用してファイルをダウンロードしようとしています。

await downloadOperation.StartAsync().AsTask(token, progressCallback);

PCでは動作していますが、モバイルではダウンロードが開始されず、モバイルを再起動するまで例外が発生しないことがあります。システムのバグですか、それとも何か不足していますか?

編集1:

タスクのステータスは「起動待ち」であるため、例外はスローされません。待っているだけで、電話を再起動するまで開始されません。常に同じURLで試していますが、PCでこの問題は発生していません。電話のみの話です。タスクのプロパティは次のとおりです。

4

1 に答える 1

3

私は最終的に問題を見つけました。ダウンロード操作を開始し、操作をキャンセルせずにアプリケーションを閉じると、BackgroundDownloader は次のアプリケーションの起動のために操作を保持します。ダウンロード操作の数が最大許容同時操作 (5 だと思います) に達すると、前の操作が完了するまで、次の操作が待機リスト () に置かれます。そのため、アプリケーションが次のように起動したときに、未完了の操作をすべて停止する必要がありました。

Task.Run(async () =>
        {
            var downloads = await BackgroundDownloader.GetCurrentDownloadsAsync();
            foreach (var download in downloads)
            {
                CancellationTokenSource cts = new CancellationTokenSource();
                download.AttachAsync().AsTask(cts.Token);
                cts.Cancel();
            }
            var localFolder = ApplicationData.Current.LocalFolder;
            var files = await localFolder.GetFilesAsync();
            files = files.Where(x => x.Name.EndsWith("_")).ToList();
            foreach (StorageFile file in files)
            {
                await file.DeleteAsync(StorageDeleteOption.PermanentDelete);
            }
        });
于 2015-07-17T10:39:34.933 に答える