WPF 之 調用線程必須爲 STA,由於許多 UI 組件都須要

  WPF中,代碼中準備控制控件內容時,有時會報錯:「 調用線程必須爲 STA,由於許多 UI 組件都須要 」。多線程

  如在winform下面,使用多線程時,控件的值讀取是能夠的,但若是要更改,那麼就必須進行一些特別的處理。WPF中也同樣。spa

  首先,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。code

相關文章
相關標籤/搜索