Windows Phone 8.1 显示进度视图直到 async/await 任务完成
Windows Phone 8.1 Showing progress view until async/await task finishes
我有两个任务,从本地存储和 returns timeSpan 中的网址下载 mp3。
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()
中
public async Task<TimeSpan> downloadFiles()
{
//ProgressShow
var temp= await filedownload_Ignition_Outside();
//if (filedownload_Ignition_Outside().IsCompleted)
//{
// //progressStop
//}
return temp;
}
但是它不执行停止语句,因为它是异步等待的,我怎样才能得到两个任务都完成的事件?
我可以在我的内部调用两个任务吗? downloadFiles() 方法,并且仍然能够获得两个任务完成的事件。
在您的 OnNavigatedTo
活动中尝试类似于下面给出的代码。
ShowProgress=true;
downloadFiles().ContinueWith((sender) =>
{
this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
ShowProgress=false;
);
});
您需要 运行 UI 线程中的 ShowProgress=False;
我有两个任务,从本地存储和 returns timeSpan 中的网址下载 mp3。
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()
中 public async Task<TimeSpan> downloadFiles()
{
//ProgressShow
var temp= await filedownload_Ignition_Outside();
//if (filedownload_Ignition_Outside().IsCompleted)
//{
// //progressStop
//}
return temp;
}
但是它不执行停止语句,因为它是异步等待的,我怎样才能得到两个任务都完成的事件?
我可以在我的内部调用两个任务吗? downloadFiles() 方法,并且仍然能够获得两个任务完成的事件。
在您的 OnNavigatedTo
活动中尝试类似于下面给出的代码。
ShowProgress=true;
downloadFiles().ContinueWith((sender) =>
{
this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
ShowProgress=false;
);
});
您需要 运行 UI 线程中的 ShowProgress=False;