主要有兩種方法可以在工作執行緒中完成ui介面元素的操作:
1.control.invoke
2.synchronizationcontext
下面的例子同時使用了這兩個方法做演示(synchronizationcontext也可以使用send來呼叫ui執行緒中的方法委託)
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.text;
using system.windows.forms;
using system.threading;
namespace wf_synchronizationcontext_test
public void showstatus(object o)
", thread.currentthread.name);
}private void button1_click(object sender, eventargs e)
});thread.isbackground = true;
thread.start(this);
}private void button2_click(object sender, eventargs e)
string s = thread.currentthread.name;
});thread.isbackground = true;
thread.start(this.sc);}}
}
子執行緒改變UI執行緒的方法
第一種 handler機制 在子執行緒中建立handler,並把此handler的looper與主線程ui執行緒繫結在一塊,這樣它就和ui執行緒公用乙個訊息佇列messagequeue looper物件裡面有訊息佇列成員 在將改變主線程的 通過runnable介面提交給主線程執行 例子 thread...
SWT多執行緒 關於非UI執行緒操作UI執行緒(二)
隨後需要在乙個新開啟的視窗後啟動乙個執行緒讀取乙個物件並按秒重新整理介面顯示。仍然使用非同步執行緒實現。方法為 1 建立乙個執行緒 public class testthread extends thread public void run catch exception e display.asy...
WPF執行緒呼叫UI元素
wpf開發中mvvm模式下,通過執行緒呼叫ui元素會報錯,提示 呼叫執行緒必須為 sta,因為許多 ui 元件都需要。解決方法有兩個 一 public delegate void delefunc public void func new delefunc func 二 thread netserv...