Para poder usar una barra de progreso en un proceso como el tuyo deberias invocarlo en un hilo de ejecucion, si es un SP que solo te devuelve el resultado una vez que termina la ejecucion del mismo, deberias usar un progressbar que avance cada 100 vuelva al inicio, y asi sucesivamente, te recomendaria usar una clase con un evento que se dispare una vez terminado el proceso en cuestion por ejemplo:
class Helper{
public event EventHandler Finished;
private void OnFinished(EventArgs e){
if (Finished != null)
Finished(this, e);
}
public void Process(){
// invocacion a tu SP
...
//una vez que termina lanzas el evento
OnFinished(EventArgs.Empty);
}
}
en tu formulario donde deseas realizar la llamada al proceso utilizas la clase
Helper helper = new ();
helper.Finished += new EventHandler(helper_Finished);
//apenas invocas al proceso prendes tu proceso que haga avanzar el progressbar de 1-100 sucesivamente hasta que escuches el evento
private void helper_Finished(object sender, EventArgs e){
//podria ser un timer el que detengas
timer1.Stop();
}
dime si me cachaste la idea sino para seguir con la explicacion y un poco + de codigo