走過的彎路: 1. DoWork方法中不能操縱UI控制項。 2. DoWork事件中調用ReportProgress方法,在ProgressChanged事件中可以操縱UI控制項。 3. WorkerReportsProgress屬性必須設置true. (預設是false. 因為這塊,費了不少時間找原因 ...
/* * Created by SharpDevelop. * User: Administrator * Date: 2017/7/31 * Time: 16:18 * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Threading; using System.ComponentModel; namespace App { /// <summary> /// Description of MainForm. /// </summary> public partial class MainForm : Form { private BackgroundWorker bw; public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // } void process1_Exited(object sender, EventArgs e) { // TODO: Implement process1_Exited } private void MainForm_Load(object sender, EventArgs e) { } void button1_Click(object sender, EventArgs e) { bw = new BackgroundWorker(); bw.WorkerReportsProgress = true; bw.WorkerSupportsCancellation = true; bw.DoWork += DoWork; bw.RunWorkerCompleted += RunWorkerComplated; bw.ProgressChanged += UpdateButtonText; bw.RunWorkerAsync(); } void RunWorkerComplated(object sender, RunWorkerCompletedEventArgs e) { MessageBox.Show("ok"); } void DoWork(object sender, DoWorkEventArgs e) { for (int i = 1; i <= 100; i++) { (sender as BackgroundWorker).ReportProgress(i); label1.Text = i.ToString(); Thread.Sleep(100); } } void UpdateButtonText(object sender, ProgressChangedEventArgs e) { button2.Text = e.ProgressPercentage.ToString(); } } }
走過的彎路:
1. DoWork方法中不能操縱UI控制項。
2. DoWork事件中調用ReportProgress方法,在ProgressChanged事件中可以操縱UI控制項。
3. WorkerReportsProgress屬性必須設置true. (預設是false. 因為這塊,費了不少時間找原因)