Peticiones http paralelas

Tengo una aplicación que realiza solicitudes de API al sitio web de last.fm mediante backgroundWorker. Inicialmente no sé cuántas solicitudes tendré que hacer. La respuesta contiene el número total de páginas, por lo que solo la recibiré después de la primera solicitud. Aquí está el código de abajo.

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

El problema es que la API de last.fm es realmente lenta y puede tardar hasta 5 segundos en obtener la respuesta. Con un gran número de páginas, la carga llevará mucho tiempo.

Quiero hacer solicitudes paralelas, digamos 3 solicitudes paralelas a la vez. ¿Es posible? Si es así, ¿cómo puedo hacerlo?

Muchas gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta