首页 新闻 会员 周边

请问高手进度条如何和要运行的程序结合使用

0
悬赏园豆:5 [已关闭问题]

请问高手进度条如何和要运行的程序结合使用,最好是VBA的,C#的也可以, 要运行的程序是现成的,运行起来时间可能比较长,想结合显示一个进度条,进度条根据程序的运行进度,显示进度条进度,感谢大家!!!

袁的主页 | 初学一级 | 园豆:116
提问于:2010-02-22 17:32
< >
分享
其他回答(3)
0

        private void btnRun_Click(object sender, EventArgs e)
        {
            btnRun.Enabled = false;

            if (txtBoxTarget.Text.Equals(String.Empty) || txtBoxTimes.Text.Equals(String.Empty))
            {
                MessageBox.Show("请输入连接的URL和连接次数!", "提示",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            int length = Int32.Parse(txtBoxTimes.Text.Trim());
            string url = txtBoxTarget.Text.Trim();
            double process = 0;
            int show = 0;

     DateTime rightNow = DateTime.Now;
            DateTime end;
            TimeSpan interval;


            toolStripStatusLabel.Text = "连接中";
            progressBar.Visible = true;
            progressBar.Minimum = 0;
            progressBar.Maximum = length;

     for (int i = 1; i <= length; i++)
            {
                try
                {

             // 这两句是连接某个网页的。
                    WebRequest myRequest = WebRequest.Create(url);
                    WebResponse myResponse = myRequest.GetResponse();
                    myResponse.Close();
                }
                catch
                {
                    txtBoxReport.Text = "网络连接有误!";
                    return;
                }

                progressBar.PerformStep();

                process = i / length;
                show = (int)process * 100;
            }

            progressBar.Visible = false;
            toolStripStatusLabel.Text = "已就绪";
            txtBoxReport.Text = "连接 " + url + " " + length + "次。";

            end = DateTime.Now;
            interval = end - rightNow;
            txtBoxReport.Text += "\r\n共耗时" + interval.TotalMilliseconds + "毫秒。";

            btnRun.Enabled = true;
        }

 

查尔斯 | 园豆:3832 (老鸟四级) | 2010-02-22 17:50
0

利用委托,Invoke方法,可以实现更新UI。也就是进度条效果。

Jared.Nie | 园豆:1940 (小虾三级) | 2010-02-23 09:23
0

.NET的话,结合backgroundworker和进度条控件很容易实现。至于怎么使用,你去查下MSDN就好了,很容易的。backgroundworker一共就三个事件,属性也就两三个

东国先生 | 园豆:225 (菜鸟二级) | 2010-02-28 16:30
0

如果是winform的话就简单了,用BackgroundWorker 就可以。它是一个专门处理后台线程的组件。

结合进度条控件,很方便的实现了进度条的功能。

一般情况下 是在 在后台线程中处理进度逻辑操作。主线程处理进度条的显示、变化。它们之间的通信用委托实现。在后台线程中用Invoke 调用委托实例来操作主线程中的显示。

webform的话可能有点麻烦,起码不准确。一般的就是显示一个gif告诉客户,正在做。

邢少 | 园豆:10926 (专家六级) | 2010-03-05 15:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册