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();}));
         

 

 


免責聲明!

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



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