C# 多執行緒,跨執行緒訪問
阿新 • • 發佈:2019-02-09
private void button4_Click(object sender, EventArgs e) { Thread thread1 = new Thread(ShowResult); thread1.IsBackground = true; thread1.Start(); } private void ShowResult() { int a = 0; for (int i = 0; i < 600000000; i++) { a = i; } if (this.textBox1.InvokeRequired)//是否要對文字框進行跨執行緒訪問。 { //Invoke:去找建立TextBox的執行緒(主執行緒(UI執行緒)),由主執行緒完成委託方法的呼叫。 this.textBox1.Invoke(new Action<TextBox, string>(ShowTextBoxValue), this.textBox1, a.ToString());//Action是無返回值的委託 } else //否則不是跨執行緒訪問 { this.textBox1.Text = a.ToString(); } } //委託註冊的函式,跨執行緒訪問,跨執行緒修改TextBox的值,其實是通過invoke方法讓主執行緒呼叫該方法。 private void ShowTextBoxValue(TextBox txt,string value) { txt.Text = value; }