private void ShowProgressBar(string message)
{
// if the progressbar doesn't exist then create it
if (m_ProgressBar == null)
{
m_ProgressBar =
new ProgressBar();
sbrBottom.Controls.Add(m_ProgressBar);
m_ProgressBar.Width = 100;
m_ProgressBar.Anchor = AnchorStyles.Right | AnchorStyles.Bottom;
m_ProgressBar.Height = 16;
m_ProgressBar.Location =
new System.Drawing.Point((sbrPanelLeft.Width - m_ProgressBar.Width) - 10, ((sbrBottom.Height - m_ProgressBar.Height) / 2) + 1);
}
sbrPanelLeft.Text = message;
m_ProgressBar.Visible =
true;
m_ProgressBar.Value = 0;
//NOTE: CRH - THIS IS BAD DESIGN AS THE THREAD IS UPDATING THE PROGRESSBAR ON A THREAD THAT IS NOT THE CREATING THREAD (I.E. THE UI THREAD)
// start a new thread to increment the progressbar
Thread progressThread =
new Thread(new ThreadStart(this.BackGroundIncrementProgressBar));
progressThread.IsBackground =
true;
progressThread.Name =
"Progress Bar";
progressThread.Start();
}
private void BackGroundIncrementProgressBar()
{
// note: this is run on a worker thread
while (m_ProgressBar.Value != 100)
{
if (m_ProgressBar.Value < 80)
m_ProgressBar.Value += 8;
Thread.Sleep(100);
}
}