wpf開發中mvvm模式下,通過執行緒呼叫ui元素會報錯,提示「呼叫執行緒必須為 sta,因為許多 ui 元件都需要。」。
解決方法有兩個:
一、
publicdelegate
void
delefunc();
public
void
func()
new delefunc(func));
二、
thread netserver = new thread(newthreadstart(netserverthreadfunc));
netserver .setapartmentstate(apartmentstate.sta);
netserver .isbackground = true
;netserver.start();
system.windows.threading.dispatcher.run();
但是,如果是全屏介面,通過第二種方法呼叫出子窗體時windows系統的工作列也會顯示,推薦使用第一種。
WPF 執行緒操縱UI問題
wpf只允許ui執行緒修改ui,其他執行緒必須通過invoke 委託 安全性 winform可以開啟 關閉 只允許ui執行緒修改ui 非ui執行緒直接修改ui,會報錯 system.invalidoperationexception 呼叫執行緒無法訪問此物件,因為另乙個執行緒擁有該物件。正確的做法是...
WPF跨執行緒更新UI控制項
1.預設情況下,在windows應用程式中,net framework不允許在乙個執行緒中直接操作另乙個執行緒中的控制項。winform中實現跨執行緒操作控制項的兩種方法 1 關閉執行緒安全檢查 control.checkforillegalcrossthreadcalls false 2 使用控制...
WPF學習筆記2 WPF子執行緒更新UI
wpf學習筆記2 wpf子執行緒更新ui 1.dispatcher wpf應用程式的主線程負責建立ui介面 接收輸入 處理事件等任務,在開發中常用子執行緒處理一些耗時的操作 為了主線程能及時響應,防止假死 但是子執行緒是不能直接更新ui介面。dispatcher的作用是管理執行緒工作項佇列,我們可以...