hola mae yo tube la misma situacion y lo hice de la siguiente forma:
como progressBar utilizas un simple <asp:Label...
ej:
Label lblProgressBar = new label();
int files= 3; //select, update e insert
for(int i =0; i < files; i++)
{
//corres el proceso
...
//actualizas el label con una tabla html con 2 columnas
//En este caso no lo estoy basando en el 100% sino en el 200%
files++;
//sacas el %
percentage = (files * 200) / totalFiles;
//parece que cuando el porcentaje esta entre 0 y 1 el progressBar muestra el progreso como si fuera 50% (la mitad) y para solucionarlo, en el caso que el porcentaje este entre 0 y 1, se pone el valor como 1%
if (percentage >= 0 && percentage < 1)
{
percentage = 1;
}
//Se actualiza el progressBar con el nuevo porcentaje
Response.Write("<script language = javascript > document.getElementById('progressBar').innerHTML='<table width=200px height=18px border=0 cellspacing=1><tr><td width="
+ percentage + " background=images/block2.gif></td><td></td></tr></table>' </script>");
//Esta line muesta el porcentaje en otro label que esta posicionado sobre el progressBar
Response.Write("<script language=javascript> document.getElementById('lblPercentage').innerHTML = '" + Math.Round(((files * 200) / totalFiles) / 2) + "%'; </script>");
//Con el metodo flush los datos viajan directamente desde el servidor hasta el cliente sin necesidad que se almacenen en el buffer (osea refrescara el progressBar)
Response.Flush();
}
eso es todo intentalo no es complicado, espero te sirva
suerte
saludos