C# 如何按顺序下载mp3文件?
我使用C# 如何按顺序下载mp3文件?,c#,windows-phone-8,C#,Windows Phone 8,我使用\u webClient.OpenReadAsync(myURI)下载文件,下载文件效果很好。我想从0-20开始按顺序下载文件。应下载第一个文件,然后下载第二个文件,依此类推。 我使用下面的下载,但它不是我所期望的 foreach (string s in files) _webClient.OpenReadAsync(new Uri(string.Format("{0}{1}", selectedReciter.DownloadURL, s))); 如果下载了第一个文件,则的循
\u webClient.OpenReadAsync(myURI)
下载文件,下载文件效果很好。我想从0-20开始按顺序下载文件。应下载第一个文件,然后下载第二个文件,依此类推。
我使用下面的下载,但它不是我所期望的
foreach (string s in files)
_webClient.OpenReadAsync(new Uri(string.Format("{0}{1}", selectedReciter.DownloadURL, s)));
如果下载了第一个文件,则的
循环应该只继续到第二个、第三个,依此类推。您可以使用相同方法的非异步版本来阻止执行,直到OpenRead流完成。您正在打开异步读取的URL,这个词意义重大。当文件开始读取时,函数不会完成,而是会更快地返回
您需要做的是等待结果,如下所示:
async Task DownloadAll(List<string> addresses)
{
var wc = new WebClient();
foreach(var address in addresses)
await wc.OpenReadTaskAsync(address);
}
async Task DownloadAll(列表地址)
{
var wc=新的WebClient();
foreach(地址中的变量地址)
等待wc.OpenReadTaskAsync(地址);
}
不要忘记先添加NuGet软件包:Microsoft.Bcl.Async
。使用后台文件传输下载文件。后台文件传输允许您在后台下载文件,这意味着当您的应用程序处于停用状态或处于后台时
更多关于后台文件传输。这是一个如何使用后台文件传输的示例。没有同步版本。仅在.NET 4.5中,但在Silverlight for Windows Phone上没有。我刚刚在Visual Studio中检查过它,Silverlight根本没有同步版本,因此强制您使用异步方法。您不能将).Result
添加到调用中以强制它完成执行吗?只有在安装了NuGet软件包并且使用了OpenReadTaskAsync
方法时,才可以使用OP提到的方法(OpenReadAsync
)在连接成功后调用指定的委托。谢谢,这会有所帮助。虽然我使用了WebClient,但现在我必须寻找后台文件传输。