C#进度条的示例代码。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace temp { delegate void SetValueCallback(int value); public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(Foo)); t.Start(); } private void Foo() { for (int i = 1; i <= 100; i++) { Thread.Sleep(100); SetProcessBarValue(i); SetLabelValue(i); } } private void SetLabelValue(int value) { // Invokerequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true. if (this.label1.InvokeRequired) { SetValueCallback d = new SetValueCallback(SetLabelValue); this.Invoke(d, new object[] { value }); } else { this.label1.Text = value.ToString() + '%'; } } private void SetProcessBarValue(int value) { // InvokeRequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true. if (this.progressBar1.InvokeRequired) { SetValueCallback d = new SetValueCallback(SetProcessBarValue); this.Invoke(d, new object[] { value }); } else //http://www.jb200.com { this.progressBar1.Value = value; } } } }