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

            }

  • 相关阅读:
    人月神话第二遍(总)--读书笔记
    Python实现人脸检测(个人、多人、视频)
    软件体系架构的质量属性
    jdk1.8 使用的是什么垃圾回收器?
    【深入理解Java虚拟机】垃圾回收
    P2167 [SDOI2009]Bill的挑战
    二项式反演基础
    P5039 [SHOI2010]最小生成树
    快速莫比乌斯/沃尔什变换 (FMT/FWT)
    莫比乌斯反演
  • 原文地址:https://www.cnblogs.com/DonetRen/p/1799285.html
Copyright © 2011-2022 走看看