using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApplication4{public partial classForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton1_Click(object sender,EventArgs e){BackgroundWorker worker =newBackgroundWorker();worker.WorkerSupportsCancellation=true;worker.DoWork+=newDoWorkEventHandler(Calculate);worker.RunWorkerAsync();FormBar f =newFormBar(worker,"處理進度");f.ShowDialog(this);}publicvoidCalculate(object sender,DoWorkEventArgs e){for(int i =0; i <1000000; i++){textBox1.Text="1234";}}}}usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceWindowsFormsApplication4{publicpartialclassFormBar:Form{publicFormBar(BackgroundWorker worker,string act){InitializeComponent();this.ControlBox =false;System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls =false;worker.RunWorkerCompleted +=newRunWorkerCompletedEventHandler(worker_RunWorkerCompleted);switch(act){case"加載進度":label1.Text ="加載數據中,請稍候";break;case"處理進度":label1.Text ="處理進度中,請稍候";break;default:label1.Text ="請稍候";break;}}publicvoidworker_RunWorkerCompleted(object sender,RunWorkerCompletedEventArgs e){this.Close();//在這里不能進行跨線程調用}privatevoidFormBar_Load(object sender,EventArgs e){label2.Text ="*";}privatevoidtimer1_Tick(object sender,EventArgs e){label2.Text +="*";if(label2.Text.Length >50){label2.Text ="*";}}privatevoidbutton1_Click(object sender,EventArgs e){if(MessageBox.Show("即將停止程序運行,確認是否退出?","確認信息", MessageBoxButtons.OKCancel)== System.Windows.Forms.DialogResult.OK){System.Environment.Exit(0);GC.Collect();}}}}