WPF不同线程之间的控件的访问
生活随笔
收集整理的這篇文章主要介紹了
WPF不同线程之间的控件的访问
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??? WPF不同線程之間的控件是不同訪問的,為了能夠訪問其他線程之間的控件,需要用Dispatcher.Invoke執行一個新的活動即可。
例如:
public void SetNotes(string notes){if (Dispatcher.Thread != Thread.CurrentThread){this.txtNote.Dispatcher.Invoke(new Action(() =>{this.txtNote.Text += notes;this.txtNote.Text += "\r";this.txtNote.ScrollToEnd();}));}else{this.txtNote.Text += notes;this.txtNote.Text += "\r";this.txtNote.ScrollToEnd();}}?WinForm中:
private delegate void delegateCrossThread(string message);private void SetStatus(string message){if (this.m_StatusLabel.InvokeRequired == true){delegateCrossThread ct = new delegateCrossThread(SetStatus);this.Invoke(ct, new object[] { message });}else{this.m_StatusLabel.Text = message;this.m_StatusLabel.Refresh();}}3、異步打開窗口
Thread newWindowThread = new Thread(new ThreadStart(ThreadStartingPoint));newWindowThread.SetApartmentState(ApartmentState.STA);newWindowThread.Start(); private void ThreadStartingPoint(){SurveyStatWindow surveyStatDialog = new SurveyStatWindow();if (m_StatDataTable != null){surveyStatDialog.TimeData = m_StatDataTable;surveyStatDialog.Init();}surveyStatDialog.ShowDialog();}?4、全局異步調用
Application.Current.Dispatcher.Invoke(new Action(() =>{AddText();}));this.Dispatcher.Invoke(new Action(() =>{AddText();}));Application.Current.Dispatcher.Invoke(new Action(delegate { AddText();}));?
?
總結
以上是生活随笔為你收集整理的WPF不同线程之间的控件的访问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于iPhone 中sqlite文件的使
- 下一篇: asp.net ajax控件工具集 Au