zoukankan      html  css  js  c++  java
  • IAsyncResult 接口异步 和 匿名委托

    private void Form1_Load(object sender, EventArgs e)
    {
    ///控件属性来处理
    Control.CheckForIllegalCrossThreadCalls = false;
    }

           DataSet ds = new DataSet();
            Mydelegate del = new Mydelegate(LoadData);
            IAsyncResult result = del.BeginInvoke(null, null);
            ds = del.EndInvoke(result);
            gridControl1.DataSource = ds.Tables[0];
    
    
          this.Invoke((EventHandler)delegate
            {
             labMessage.Text = "数据填充中......";
            });
    
    
        /// <summary>
        /// Invoke 修改主线程控件的属性
        /// </summary>
        /// <param name="strMsg"></param>
        delegate void SafeSetText(string strMsg);
        private void SetText(string strMsg)
        {
    
            if (textBox1.InvokeRequired)
            {
                SafeSetText objSet = new SafeSetText(SetText);
                textBox1.Invoke(objSet, new object[] { strMsg });
    
            }
            else
            {
                textBox1.Text = strMsg;
            }
        }
    
        /// <summary>
        /// 匿名委托
        /// </summary>
        /// <param name="strMsg"></param>
        delegate void SafeSetText(string strMsg);
        private void SetText2(string strMsg)
        {
            SafeSetText objSet = delegate(string str)
             {
                 textBox1.Text = str;
             };
            textBox1.Invoke(objSet, new object[] { strMsg });
        }
    
    
          ///3.0及以后的版本中有了Lamda表达式
            this.Invoke(new Action(() =>
            {
                textBox1.Text = "关闭";
    
            }));
    
    
    
    
    
       Thread invokeThread;
        private void button1_Click(object sender, EventArgs e)
        {
    
            ////执行输出顺序:AAA  CCC  EEE  BBB DDD
            string DataTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ff");
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "AAA" + " " + DataTime);
            invokeThread = new Thread(new ThreadStart(StartMethod));
            invokeThread.Start();
            string a = string.Empty;
            for (int i = 0; i < 3; i++)      //调整循环次数,看的会更清楚
            {
                //Thread.Sleep(1000);
                a = a + "B";
            }
            string DataTime2= DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ff");
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + a + " " + DataTime2);
        }
    
    
        private void StartMethod()
        {
            string DataTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ff");
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "CCC" + " " + DataTime);
            button1.Invoke(new Action(invokeMethod),new Object[]{});
            string DataTime2 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ff");
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "DDD" + " " + DataTime2);
        }
    
        private void invokeMethod()
        {
    
            //Thread.Sleep(3000);
            string DataTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ff");
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "EEE" + " " + DataTime);
        }
    
        
    
    
    
        Thread begingInvoke;
        private void button2_Click(object sender, EventArgs e)
        {
            string DataTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ff");
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "AAA" + " " + DataTime);
            begingInvoke = new Thread(new ThreadStart(begingInvokeStartMethod));
            begingInvoke.Start();
            string a = string.Empty;
            for (int i = 0; i < 3; i++)      //调整循环次数,看的会更清楚
            {
                //Thread.Sleep(1000);
                a = a + "B";
            }
            string DataTime2 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ff");
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + a + " " + DataTime2);
        }
        private void begingInvokeStartMethod()
        {
            string DataTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ff");
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "CCC" + " " + DataTime);
            button1.BeginInvoke(new Action(begingInvokeMethod),new Object[]{});
            string DataTime2 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ff");
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "DDD" + " " + DataTime2);
        }
    
        private void begingInvokeMethod()
        {
            string DataTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ff");
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "EEE" + " " + DataTime);
        }
  • 相关阅读:
    虚拟主机服务器错误404解决方法
    虚拟主机服务器错误404解决方法
    虚拟主机服务器错误404解决方法
    以太坊:Truffle开发入门
    区块链是低成本的工业化基因测序解决方案
    区块链公证和知识产权(IP)保护原理
    区块链公证和知识产权(IP)保护应用场景
    ACOUG China Tour 2019上海站,等你来约!
    解析MySQL基础架构及一条SQL语句的执行流程和流转
    jquery 查找节点
  • 原文地址:https://www.cnblogs.com/VictorBlog/p/5695118.html
Copyright © 2011-2022 走看看