Hola, ésto como lo estás haciendo es un error:
Paso 2. Recorro el datagrid a traves de un foreach y aqui ejecuto las sentencias SQL para insertar cada registro
porque con cada dato que estés ingresando en el datagrid estás haciendo una consulta/query a la base de datos, lo cuál es una sobrecarga innecesaria y excesiva, en estos casos lo correcto y recomendable es primero hacer una sola consulta a la base de datos y guardar todos los datos en una variable luego ahí si hacer el foreach para ir añadiendo todos los datos al datagrid.
En cuánto a la barra de progreso claro que es posible hacerla y no es difícil, tenés que contar todos los elementos que vas a ingresar al datagrid y con ese total (rango) podes crear la barra para indicarle a tu programa cuál será el final del progreso, por ultimo cuándo hagas el foreach en tu datagrid para agregar los datos ahí vas sumando un valor (set value) a la barra por cada iteración.
Saludos