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,但现在我必须寻找后台文件传输。