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();}));
             
    
  • 相关阅读:
    Python格式符号
    Python基础知识
    HDFS 数据流程
    HDFS IO流操作
    HDFS API操作
    Hadoop 客户端环境准备
    Hadop 环境搭建 windows10+hadoop2.7.7
    Hadoop HDFS shell
    Hadoop HDFS 基础
    centos 更改清华源
  • 原文地址:https://www.cnblogs.com/sshoub/p/2355501.html
Copyright © 2011-2022 走看看