Pedidos HTTP paralelos

Eu tenho um aplicativo que faz solicitações de API para o site last.fm usando o backgroundWorker. Inicialmente não sei quantos pedidos vou precisar fazer. A resposta contém o número total de páginas, portanto, só receberei após a primeira solicitação. Aqui está o código abaixo.

    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++;
        }

O problema é que a API last.fm é muito lenta e pode levar até 5 segundos para receber a resposta. Com um grande número de páginas, o carregamento demorará muito tempo.

Eu quero fazer solicitações paralelas, digamos 3 solicitações paralelas de cada vez. É possível? Se sim, como posso fazer isso?

Muito obrigado.

questionAnswers(2)

yourAnswerToTheQuestion