WPF 之 調用線程必須為 STA,因為許多 UI 組件都需要


  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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM