.NET並行計算和並發3.2-多線程調用Invoke
阿新 • • 發佈:2017-08-18
進度 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; 5View Codepublic 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 privatevoid 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 { 27j++; 28 if (j%1000 == 0) 29 { 30 //調用Invoke方法後,會在原來的創建textbox1的線程中執行delegateMethod方法。 31 this.Invoke(dele,j); 32 } 33 } 34 } 35 } 36
.NET並行計算和並發3.2-多線程調用Invoke