deepaksharma0390 Ответов: 1

Как скачать файлы с Google Диска в фоновом режиме


Я работаю над этим приложением Windows 8.1 store.

Я пытаюсь загрузить файл с google диска с помощью google-drive-api v3 в фоновом режиме, не прерывая его, если я перейду на какую-то другую страницу.

Ниже приведено то, что я делаю, чтобы загрузить файл, но я не уверен, что мне нужно сделать, чтобы сделать то же самое в фоновом режиме.

Может ли кто-нибудь помочь мне, как я могу сделать то же самое в фоновой задаче.

Спасибо,

Что я уже пробовал:

public  async Task DownloadFile(DriveService service, File file)
        {
            var request = service.Files.Get(file.Id);
            var stream = new MemoryStream();
            if (file.MimeType != "application/vnd.google-apps.folder")
            {
                request.MediaDownloader.ProgressChanged += (IDownloadProgress progress) =>
                {
                    switch (progress.Status)
                    {
                        case DownloadStatus.Downloading:
                            {
                                Debug.WriteLine(progress.BytesDownloaded);
                                break;
                            }
                        case DownloadStatus.Completed:
                            {
                                Debug.WriteLine("Download complete.");
                                break;
                            }
                        case DownloadStatus.Failed:
                            {
                                Debug.WriteLine("Download failed.");
                                break;
                            }
                    }
                };
                request.Download(stream);
                await SaveToLocalFolderAsync(stream, file.Name);
            }
        }

1 Ответов

Рейтинг:
4

Afzaal Ahmad Zeeshan

У вас уже есть асинхронная функция, просто добавьте Task.Run[^] функция в теле для запуска задачи в фоновом режиме, которая просто потребует обернуть туда код функции и выполнить его.

public void func() {
   Task.Run(async () => {
      // awaitable code here.
   });
}

Возможно, Вам также придется изменить внутреннюю функцию на асинхронную, просто прочтите ссылку, приведенную выше, в ней есть примеры для ваших нужд.

Я рекомендую вам попробовать прочитать это, Асинхронное программирование с помощью async и await (C#)[^].


deepaksharma0390

Эта работа.Спасибо.
У меня есть еще один вопрос. Есть ли способ, которым я могу отслеживать эти задачи и отображать статусы, возможно, на какой-то странице(например, в какой-то очереди). Есть какой-нибудь указатель на то, как я могу это реализовать ?
Ценю вашу помощь.