zoukankan      html  css  js  c++  java
  • 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();}));
             
    
  • 相关阅读:
    【NIPS 2018】完整论文下载链接
    【今日CV 视觉论文速览】30 Nov 2018
    【超好玩的在线AI项目】浏览器里玩AI------持续更新
    hdu 4035 Maze 概率DP
    hdu 4089 Activation 概率DP
    hdu 4405 Aeroplane chess 概率DP
    zoj 3329 One Person Game 概率DP
    poj 2096 Collecting Bugs 概率DP
    poj 3744 Scout YYF I
    2013 Multi-University Training Contest 5 Partition
  • 原文地址:https://www.cnblogs.com/sshoub/p/2355501.html
Copyright © 2011-2022 走看看