public partial class frmProcessBar : Form
{
public frmProcessBar()
{
InitializeComponent();
} public bool Increase(int nValue)
{
if (nValue > )
{
if (progressBar1.Value + nValue < progressBar1.Maximum)
{
progressBar1.Value += nValue;
return true;
}
else
{
progressBar1.Value = progressBar1.Maximum;
this.Close();
return false;
}
}
return false;
}
}
private frmProcessBar myProcessBar = null;
private delegate bool IncreaseHandle(int nValue);
private IncreaseHandle myIncrease = null; private void btnRun_Click(object sender, EventArgs e)
{
Thread thdSub = new Thread(new ThreadStart(ThreadFun));
thdSub.Start();
} private void ShowProcessBar()
{
myProcessBar = new frmProcessBar();
// Init increase event
myIncrease = new IncreaseHandle(myProcessBar.Increase);
myProcessBar.ShowDialog();
} private void ThreadFun()
{
MethodInvoker mi = new MethodInvoker(ShowProcessBar);
this.BeginInvoke(mi);
bool blnIncreased = false;
object objReturn = null;
do
{
Thread.Sleep();
objReturn = this.Invoke(this.myIncrease,new object[] { });
blnIncreased = (bool)objReturn;
}
while (blnIncreased);
}