Смысл Прогресс-Бара - дать понять пользователю "когда же это безобразие кончиться" 8). Для этого в первую очередь твой процесс должен тебе как-то сообщать что-же в нем происходит.
Если эта проблема решена - создай форму, в нее поставь тот самый прогресс бар, и меняй его position на процент завершенной работы. Если твой процесс это на самом деле твой-же thread, то проще всего (хотя и грязненько с точки зрения технологии) сделать singleton из этой формы, и просто вызывать соответствующую функцию.
Импровизация на тему:
class ProgressForm : Form
{
static ProgressForm g_Instance;
static ProgressForm()
{
g_Instance = new ProgressForm();
}
static public ProgressForm Instance { get { return g_Instance; }}
public int Position
{
get
{
return m_ProgressBar.Pos;
}
set
{
InternalSetPos(value);
}
}
protected delegate void InternalSetPosDelegate(int pos);
protected void InternalSetPos(int pos)
{
if(InvokeRequired)
{
Invoke(new InternalSetPosDelegate(InternalSetPos),new object[] { pos } );
return;
}
m_ProgressBar.Pos = pos;
}
}
}
И так далее, и тому подобное
Прошу прощения за индентацию.