首页 > 代码库 > C# 模式窗口下更新进度条

C# 模式窗口下更新进度条

public partial class frmProcessBar : Form    {        public frmProcessBar()        {            InitializeComponent();        }        public bool Increase(int nValue)        {            if (nValue > 0)            {                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(50);                objReturn = this.Invoke(this.myIncrease,new object[] { 1 });                blnIncreased = (bool)objReturn;            }            while (blnIncreased);        }