WPF 之 調用線程必須為 STA,因為許多 UI 組件都需要
阿新 • • 發佈:2019-01-02
lose token 更改 con target result dispatch for bsp
WPF中,代碼中準備控制控件內容時,有時會報錯:“ 調用線程必須為 STA,因為許多 UI 組件都需要 ”。
如在winform下面,使用多線程時,控件的值讀取是可以的,但如果要更改,那麽就必須進行一些特別的處理。WPF中也一樣。
首先,WPF中,當報上面那個錯誤時,代碼可以改成類似以下:
void authOK(AuthorizationResult auth) { App.Current.Dispatcher.Invoke((Action)(() => { labInfo.Content = "登錄成功"; btnLogin.IsEnabled = true; labUser.Content = auth.User.Name; labToken.Content = auth.AccessToken; loginWin.Close(); client.Close(); })); }
Dispatcher是一個線程控制器,反正你要控制線程裏跑的東西,就要經過它。那麽WPF裏面,有個所謂UI線程,後臺代碼不能直接操作UI控件,需要控制,就要通過這個Dispatcher。
參考鏈接:https://www.cnblogs.com/xinaixia/p/5706096.html
WPF 之 調用線程必須為 STA,因為許多 UI 組件都需要