如何跨越執行緒呼叫窗體控制項?(1)

2022-05-21 02:41:01 字數 593 閱讀 4406

一、前言

二、本節介紹最簡單的方法。

在主線程中,定義乙個子執行緒處理的物件,通過主線程啟動子執行緒。然後通過主線程,不斷的獲取最新的處理狀態。當然,也可以定義乙個全域性變數,子執行緒不斷更新該全域性變數,而主線程定時去獲取狀態資訊。

主線程不斷獲取子執行緒的處理狀態,可以通過定時器來完成。

注意,子執行緒沒有去操作ui(主線程)的任何元素。

這種方法是一種偷換概念的方法。

public partial class form1 : form     //ui執行緒

private void 啟動子執行緒_click(object sender, eventargs e)   //啟動子執行緒

private void button1_click(object sender, eventargs e)   //主線程可以定時不斷的獲取子執行緒狀態,通過子執行緒物件

private void timer1_tick(object sender, eventargs e)   //定時器不斷更新ui上,反應子執行緒處理狀態的資訊

}public class subthread   // 子執行緒處理類

} while (flag);}}

如何跨越執行緒呼叫窗體上的控制項

ui 的響應速度 使得一切執行顯得更為快速。在 windows 中進行多執行緒程式設計曾經是 c 開發人員的專屬特權,但是現在,可以使用所有相容 microsoft net 的語言來編寫。不過 windows 窗體體系結構對執行緒使用制定了嚴格的規則。如果只是編寫單執行緒應用程式,則沒必要知道這些規...

如何跨越執行緒呼叫窗體上的控制項

ui 的響應速度 使得一切執行顯得更為快速。在 windows 中進行多執行緒程式設計曾經是 c 開發人員的專屬特權,但是現在,可以使用所有相容 microsoft net 的語言來編寫。不過 windows 窗體體系結構對執行緒使用制定了嚴格的規則。如果只是編寫單執行緒應用程式,則沒必要知道這些規...

如何跨執行緒呼叫winform窗體控制項

方法一 直接關閉異常,不檢查跨執行緒呼叫private void form1 load object sender,eventargs e 方法二 利用委託 舉例1 delegate void tasktype string sztext 這裡是因為執行緒的方法只能是object型別 void th...