首页 > 编程语言 > 详细

WPF不同线程之间的控件的访问

时间:2019-04-15 11:11:49      阅读:146      评论:0      收藏:0      [点我收藏+]
原文: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不同线程之间的控件的访问

原文:https://www.cnblogs.com/lonelyxmas/p/10709206.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!