zoukankan      html  css  js  c++  java
  • 在线程委托中实现参数的传递

    在用线程委托对Windows窗体控件进行操作时,有时需要在线程委托中以参数的形式判断当前线程的执行方式,下面以简单的例子在子线程中以两种方式操作窗体中的TextBox控件。代码如下:

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Windows.Forms;

     

    using System.Threading;//添加线程的命名空间

     

    namespace ppp

    {

        public partial class Form1 : Form

        {

            public Form1()

            {

                InitializeComponent();

            }

     

            Thread t; //定义线程变量

     

            private void button1_Click(object sender, EventArgs e)

            {

                t = new Thread(new ThreadStart(Threadp)); //实例化线程

                t.Start();//启动线程

            }

    定义一个带参数的线程委托。

            private delegate void setText(bool b);

    自定义方法Threadp,主要用于线程的调用。代码如下:

            public void Threadp()

            {

                setText d = new setText(Threading);

                this.BeginInvoke(d, new object[] { checkBox1.Checked });

            }

    自定义带有参数的方法Threading,主要作于委托的调用。代码如下:

            public void Threading(bool b)

            {

                if (b)

                {

                    textBox1.Text = "复选框被选中,执行相应的操作";

                }

                else

                {

                    textBox1.Text = "复选框没有被选中,执行相应的操作";

                }

                t.Abort();

            }

        }

    }

       在线程的委托中,也可以定义多个参数,下面对上的部份代码进行一下修改,以说明如何在委托中定义多个参数。代码如下:

            public void Threadp()

            {

                setText d = new setText(Threading);

                this.BeginInvoke(d, new object[] { checkBox1.Checked, 0 });

            }

     

            private delegate void setText(bool b,int n);

            public void Threading(bool b,int n)

            {

                if (b)

                {

                    textBox1.Text = "复选框被选中,执行相应的操作";

                }

                else

                {

                    textBox1.Text = "复选框没有被选中,执行相应的操作";

                }

                t.Abort();

            }

  • 相关阅读:
    js导出table到excel,同时兼容FF和IE
    Android 程式开发:(廿一)消息传递 —— 21.3 使用Intent发送短信
    [置顶] 让金融互联网-P2P网贷融资量增长10倍的广告宣传公益活动
    Headroom.js插件用法
    HDU 5289 Assignment(单调队列)
    sh_Spring整合Hibernate
    怎样高速启动Android模拟器(Android Emulator)
    设计模式——介绍与工厂模式(扁平管理模式VS职业经理人模式)
    在c++11中你最惊讶的新feature是什么?
    python的私有化
  • 原文地址:https://www.cnblogs.com/DonetRen/p/1799285.html
Copyright © 2011-2022 走看看