• 在线程委托中实现参数的传递


    在用线程委托对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();

            }

  • 相关阅读:
    DS博客作业02--栈和队列
    DS博客作业02--线性表
    c博客06-结构
    c博客作业05--指针
    C博客作业04--数组
    博客作业03-函数
    循环结构
    c博客作业01--分支、顺序结构
    我的第一篇博客
    Macos安装JDK1.8
  • 原文地址:https://www.cnblogs.com/DonetRen/p/1799285.html
Copyright © 2020-2023  润新知