**
control類提供了乙個invoke方法來給子執行緒訪問主線程的控制項,它的原型是醬紫的:
object.control.invoke(delegate method);method是已建立的委託物件,如果該物件的關聯方法有引數,那就放在陣列args中,沒有就不用傳object.control.invoke(delegate method,params object args);
invoke食用方法如下(假設我訪問控制項的方法是getforms()):
public delegate void getformsdelegate(getforms的引數宣告);//宣告乙個與所呼叫的用來訪問控制項的方法匹配的委託型別,引數必須一致來乙個完整的例子:public void mythread()
);}
這是使執行緒將學生資訊輸出到listbox控制項的例子
namespace threadvisitingcontrolprivate void showstuifo(string no, string name, double score) //本例中的執行緒要通過這個方法來訪問主線程中的控制項
public delegate void stuinfodelegate(string no, string name, double score); //宣告委託型別
private void stuthread() //執行緒方法
); //執行緒通過方法的委託執行showstuifo(),實現對listbox控制項的訪問
}private void button1_click(object sender, eventargs e)}}
C 窗體 UI執行緒委託
很多時候寫windows程式都需要結合多執行緒,在c 中用如下得 來建立並啟動乙個新的執行緒。thread thread new thread new threadstart threadproc 例項化乙個執行緒 thread.isbackground true 將執行緒改為後台執行緒 threa...
其他執行緒訪問UI執行緒
final progressbar pb new progressbar shell,swt.none pb.setbounds 68,153,365,17 final int minnimum pb.getminimum final int maximum pb.getmaximum runnab...
C 多執行緒使用委託修改介面UI
多執行緒修改介面時,需要考慮到一般多執行緒讀髒資料,資料重寫等問題,所以一般把多線成修改介面的方法交由ui執行緒本身執行,這樣就使多執行緒修改ui變成單執行緒修改了,問題得到簡化 多執行緒如何將修改介面的方法交給ui執行緒呢,就是用c 的委託了 我一般的做法如下 delegate void upda...