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();

            }

  • 相关阅读:
    vue 组件开发 props 验证
    vue中$emit与$on
    vue中的 ref 和 $refs
    Animate.css动画特效
    Css Tada动画效果(Css Tada Animation Effect)--- shake抖动效果
    给某个dom对象添加动画fadeIn、fadeInDown、flipInY、jackInTheBox
    uniapp导航栏自定义按钮及点击事件
    uniapp的微信小程序,获取授权,获取中文街道地理位置
    在mac上如何用safari调试ios手机的移动端页面
    条件编译
  • 原文地址:https://www.cnblogs.com/DonetRen/p/1799285.html
Copyright © 2011-2022 走看看