2013年9月11日 星期三

[轉貼] ProgressBar用法:模擬進度條

出處:http://www.piaoyi.org/c-sharp/C-ProgressBar.html

    在不考慮複雜情況下,我們可以採用不安全的線程調用,即允許子線程操作主線程裡的控件狀態,在初始化的時候後,加上這麼一句:
Control.CheckForIllegalCrossThreadCalls = false;
//線程的不安全調用,允許線程直接調用主線程控件
    就OK了。
=======================================================

    如果採用安全的線程調用,則可以採用委託 invoke 方法。

        //模擬進度條
        private void Send()
        {
            int i = 0;
            while (i <= 100)
            {
                //顯示進度信息
                this.ShowPro(i);
                i++; //模擬發送多少
                Thread.Sleep(100);
            }
            Thread.CurrentThread.Abort();
        }
        private delegate void ProgressBarShow(int i);
        private void ShowPro(int value)
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new ProgressBarShow(ShowPro), value);
            }
            else
            {
                this.progressBar1.Value = value;
                this.label1.Text = value + "% Processing...";
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Thread thread = new Thread(new ThreadStart(Send)); //模擬進度條
            thread.IsBackground = true;
            thread.Start(); 
        }

沒有留言:

張貼留言