代码改变世界

使用backgroundwork实现异步显示加载数据的信息。

2009-07-08 21:00  Jeffery Tao  阅读(377)  评论(0)    收藏  举报

 public partial class Form1 : Form
    {
        private string fileName = string.Empty;
        public Form1()
        {
            InitializeComponent();
        }
        private void GetResult()
        {
            int i=0;          
            if(this.textBox1.Text.Trim()=="")
                return;
            this.listBox1.Items.Clear();
            string[] MyFolders = System.IO.Directory.GetFileSystemEntries(this.textBox1.Text);
            for (i = 0; i < MyFolders.Length; i++)
            {
                Thread.Sleep(10);
                fileName = MyFolders[i];
                this.listBox1.Items.Add(MyFolders[i]);
                backgroundWorker1.ReportProgress(i);
            }
           
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            GetResult();
        }

        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {

            Tb_Progress.Text = "正在加载第" + e.ProgressPercentage.ToString() + "条数据。" + fileName;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (this.folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                this.textBox1.Text = this.folderBrowserDialog1.SelectedPath;
            }
        }
    }

 

上面写完后,还要设置一下backgroundwork的属性:

WorkerReportsProgress:true