Windows Phone 8.1显示进度视图,直到异步/等待任务完成

时间:2015-06-04 06:47:44

标签: c# asynchronous windows-phone-8.1 win-universal-app

我有两个任务是从本地存储中的网址下载一个mp3并返回timeSpan。

 public async Task<TimeSpan> filedownload_Ignition_Outside()
            {
                Uri sourceIgnition_Outside = new Uri(TemporaryAddress.download_playCarSound+"Ignition_Outside");
//download and store file

                return duration_Ignition_Outside;
            }






public async Task<TimeSpan> filedownload_Idle_Outside()
    {
        Uri sourceIdle_Outside = new Uri(TemporaryAddress.download_playCarSound +"Idle_Outside");
        StorageFile destinationFileIdle_Outside;
       //download and store file

        return duration_Idle_Outside;

    }

现在我需要在UI中显示不确定的进度条,同时下载开始直到结束但不知道如何找到完成的任务?

在我的 NavigatedTo 函数中,我将其设置为异步并且正在调用 等待downloadFile();

现在在我的 downloadFile()

 public async Task<TimeSpan> downloadFiles()
            {
                //ProgressShow



              var temp= await filedownload_Ignition_Outside();



                //if (filedownload_Ignition_Outside().IsCompleted)
                //{
                //    //progressStop
                //}

return temp;

    }

但它没有执行stop语句,因为它异步等待如何才能获得两个任务完成的事件?
我可以在downloadFiles()方法中调用两个任务并且仍然能够完成任务完成的事件。

1 个答案:

答案 0 :(得分:1)

尝试使用与OnNavigatedTo事件中下面给出的代码类似的内容。

          ShowProgress=true;
           downloadFiles().ContinueWith((sender) =>
            {
                this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                   ShowProgress=false;
                );
            });

您需要在UI线程中运行ShowProgress=False;