我有一个应用程序使用 backgroundWorker 向 last.fm 网站发出 API 请求。最初我不知道我需要提出多少请求。响应包含总页数,所以我只会在第一次请求后得到它。这是下面的代码。
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
int page = 1;
int totalpages = 1;
while (page <= totalpages)
{
if (backgroundWorker.CancellationPending)
{
e.Cancel = true;
return;
}
//Here is the request part
string Response = RecentTracksRequest(username, from, page);
if (Response.Contains("lfm status=\"ok"))
{
totalpages = Convert.ToInt32(Regex.Match(Response, @"totalPages=.(\d+)").Groups[1].Value);
MatchCollection match = Regex.Matches(Response, "<track>((.|\n)*?)</track>");
foreach (Match m in match)
ParseTrack(m.Groups[1].Value);
}
else
{
MessageBox.Show("Error sending the request.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (page >= totalpages)
break;
if (totalpages == 0)
break;
if (page < totalpages)
page++;
}
问题是 last.fm API 真的很慢,可能需要 5 秒才能得到响应。对于大量页面,加载将需要很长时间。
我想发出并行请求,一次说 3 个并行请求。可能吗?如果是,我该怎么做?
非常感谢。