1. 程式人生 > >.NET並行計算和並發3.2-多線程調用Invoke

.NET並行計算和並發3.2-多線程調用Invoke

進度 color one void new -418 invoke 調用 操作

以下這個例子是用一個後臺線程執行計算邏輯,這樣不影響前臺界面操作,也就是說

可以在前臺UI界面執行其他操作。

重點是新線程中,調用了一個委托方法,這個方法是需要填充數據到前臺控件,因為

前臺控件是在原來的線程中創建的,所以在新線程中需要調用Invoke方法,實時的展示

後臺邏輯的計算進度。

代碼如下:

技術分享技術分享
  1  public partial class Form1 : Form
  2     {
  3         private delegate  void mydelegate(long j);
  4         private mydelegate  dele;
  5
public Form1() 6 { 7 InitializeComponent(); 8 dele += new mydelegate(delegateMethod); 9 } 10 11 private void delegateMethod(long j) 12 { 13 this.textBox1.Text = j.ToString(); 14 } 15 16 private
void button1_Click(object sender, EventArgs e) 17 { 18 Thread thd = new Thread(threadMethod); 19 thd.Start(); 20 } 21 22 private void threadMethod() 23 { 24 long j = 0; 25 for (int i = 0; i < 1e10; i++) 26 { 27
j++; 28 if (j%1000 == 0) 29 { 30 //調用Invoke方法後,會在原來的創建textbox1的線程中執行delegateMethod方法。 31 this.Invoke(dele,j); 32 } 33 } 34 } 35 } 36
View Code

技術分享

.NET並行計算和並發3.2-多線程調用Invoke