1. 程式人生 > >C#呼叫執行緒必須為 STA,因為許多 UI 元件都需要。

C#呼叫執行緒必須為 STA,因為許多 UI 元件都需要。

異常: 引發了異常: PresentationCore.dll 中的“System.InvalidOperationException”(“呼叫執行緒必須為 STA,因為許多 UI 元件都需要。”)。引發了異常: PresentationCore.dll 中的“System.InvalidOperationException”(“呼叫執行緒必須為 STA,因為許多 UI 元件都需要。”)

引起異常就下這句:

titleLab.Content = "通話中..." + msg;

引起異常是因為那麼WPF裡面,有個所謂UI執行緒,後臺程式碼不能直接操作UI控制元件,需要控制,就要通過這個Dispatcher。

如下處理:

Dispatcher.BeginInvoke(new Action(delegate
                                    {
                                        titleLab.Content = "通話中..." + msg;
                                    }));

問題解決。