GIS与人工智能是未来GIS的归宿

为我们的世界建模

导航

C#进度条(Backgroudworker)

  C#进度条(Backgroudworker)

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace 进度条2

{

    public partial class Form1 : Form

    {

        private BackgroundWorker worker = new BackgroundWorker();

        int N = 0;

        public Form1()

        {

            InitializeComponent();

            worker.WorkerReportsProgress = true;

            worker.WorkerSupportsCancellation = true;

            worker.DoWork += new DoWorkEventHandler(DoWork);                               

            worker.ProgressChanged += new ProgressChangedEventHandler(ProgessChanged);     

            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompleteWork); 

        }

        public void DoWork(object sender, DoWorkEventArgs e)

        {

            e.Result = ComputeFibonacci(worker, e);

        }

        public void ProgessChanged(object sender, ProgressChangedEventArgs e)

        {

            progressBarX1.Value = e.ProgressPercentage;

            int V =(int)( e.ProgressPercentage / N);

            progressBarX1.Text = Convert.ToString(V) + "%";           

        }

        public void CompleteWork(object sender, RunWorkerCompletedEventArgs e)

        {

            progressBarX1.Text = "处理完毕!";

        }

        private int ComputeFibonacci(object sender, DoWorkEventArgs e)

        {

            for (int i = 0; i <= 92800; i++)

            {

                if (worker.CancellationPending)

                {

                    e.Cancel = true;

                    return -1;

                }

                else

                {

                    worker.ReportProgress(i);       //引发ProgessChanged事件

                }

            }

            return -1;

        }

        private void btnStart_Click(object sender, EventArgs e)

        {

            N = 92800 / 100;

            progressBarX1.Maximum = 92800;

            worker.RunWorkerAsync();        //开始执行后台操作

        }

        private void btnPause_Click(object sender, EventArgs e)

        {

            worker.CancelAsync();           //请求暂停后台操作

        }

     }

}

posted on 2009-05-31 09:29  kisstome88  阅读(1696)  评论(0编辑  收藏  举报