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 WindowsApplication4{ public partial class Form1 : Form { //聲明代理類型 delegate void delegateTest(int p); //為代理類型建立新的執行個體 private delegateTest test=null; //為了不影響介面響應,需要建立一個線程 Thread th = null; public Form1() { InitializeComponent(); //為線程初始化 th = new Thread(new ThreadStart(run)); //初始化代理執行個體 test = new delegateTest(testD); } private void button1_Click(object sender, EventArgs e) { //方法通過調用線程開始 th.Start(); } /// <summary> /// 實際進行迴圈操作的函數 /// </summary> void run() { for (int i = 0; i <= 100; i++) { ///每次需要長時間處理的過程 Thread.Sleep(100); //調用代理的方法 this.Invoke(test, i); } } /// <summary> /// 處理介面元素顯示進度 /// </summary> /// <param name="p"></param> void testD(int p) { //處理介面元素顯示進度 progressBar1.Value = p; label1.Text = p+"%"; } private void stop_Click(object sender, EventArgs e) { th.Abort(); this.Invoke(test, 0); } }}
//或者直接設定 可以線程操作介面System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;