Olá Rafael,
A sua aplicação fica "travada" porque você está executando a rotina que demora 10 min na
thread principal da aplicação, onde está a interface gráfica.
Você precisa, em primeiro lugar, executar a rotina em uma thread separada para deixar a
thread da UI livre para poder ter uma Progress Bar... Depois é apenas uma questão de atualizar o controle Progress Bar conforme for avançando na sua rotina.
O mais simples é utilizar a classe BackgroundWorker que permite executar código em uma
thread separada (em background) e já tem um evento específico para indicar progresso (onde você atualiza a Progress Bar).
Aqui tem alguns exemplos:
Iniciar -> Processar -> Fechar (Dúvida)
http://social.msdn.microsoft.com/Forums/pt/clientept/thread/e36a4ee0-be17-41e6-9279-9bbdd407798e
Duvida no ProgressBar em MessageBox
http://social.msdn.microsoft.com/Forums/pt-PT/vscsharppt/thread/f5d684de-eb35-4f02-8166-667c2fa0a3fc
Como posso atualizar um ProgressBar por uma outra classe que não seja a classe do Form
http://social.msdn.microsoft.com/Forums/pt/vscsharppt/thread/b91b9f99-6016-446a-b817-b78eebdfd9b0
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net