构造有参数的线程ParameterizedThreadStart

构造有参数的线程ParameterizedThreadStart构造有参数的线程就得需要用到ParameterizedThreadStart,查看从元数据可以看出ParameterizedThreadStart是一个委托,参数类型必须是Object类型。我们通过线程对象的Start方法可以将参数传入,如thread.Start(“20191230”),此时参数“20191230”就会传递给子线程要执行的方法。代码:classProgram…

大家好,又见面了,我是你们的朋友全栈君。

构造有参数的线程就得需要用到ParameterizedThreadStart,查看从元数据可以看出ParameterizedThreadStart是一个委托,参数类型必须是Object类型。

构造有参数的线程ParameterizedThreadStart

我们通过线程对象的Start方法可以将参数传入,如thread.Start(“20191230”),此时参数“20191230”就会传递给子线程要执行的方法。代码:

 class Program
    {
        static void Main(string[] args)
        {
            //Thread thread = new Thread(new ParameterizedThreadStart(WorkerA));
            Thread thread = new Thread(WorkerA);
            thread.Start("20191230");
            Console.WriteLine("主程序退出");
            
        }

        static void WorkerA(object data) {
            Thread.Sleep(1000);
            Console.WriteLine("传入的参数:"+data.ToString());
            Console.WriteLine("后台程序退出");
        }
    }

以上代码输出结果为:

构造有参数的线程ParameterizedThreadStart

既然我们传入的是object类型,那我们也可以传入一个集合或者数组:

 static void Main(string[] args)
        {
            //Thread thread = new Thread(new ParameterizedThreadStart(WorkerA));
            Thread thread = new Thread(WorkerA);
            List<int> list = new List<int>() { 1, 2, 3 };
            thread.Start(list);
            Console.WriteLine("主程序退出");
            Console.ReadKey();
        }

        static void WorkerA(object data)
        {
            List<int> listmy = (List<int>)data;
            Thread.Sleep(1000);
            for (int i = 0; i < listmy.Count; i++)
            {
                Console.WriteLine("传入的参数" + listmy[i].ToString());
            }
            Console.WriteLine("后台程序退出");
        }

输出结果为:

构造有参数的线程ParameterizedThreadStart

 

Demo链接:https://github.com/wangongshen/Wgs.CSDN.Demo2019

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159641.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月15日 下午2:16
下一篇 2022年7月15日 下午2:16


相关推荐

  • linux重启下mysql数据库命令_linux重启mysql数据库命令

    linux重启下mysql数据库命令_linux重启mysql数据库命令Linux 中难免会对数据库进行操作 下面由学习啦小编为大家整理了 linux 重启 mysql 数据库命令的相关知识 希望对大家有帮助 linux 重启 mysql 数据库命令 1 使用 service 启动 servicemysql 5 5 7 版本命令 linux 重启 mysql 数据库命令 2 使用 mysqld 脚本启动 etc init d mysq

    2025年9月13日
    7
  • Vue项目关闭eslint校验「建议收藏」

    Vue项目关闭eslint校验「建议收藏」1.vue-cli2.0关闭eslint校验vue-cli2.0实现2.vue-cli3.0关闭eslint校验报错:eslint-disable-next-linetoignorethenextline.解决方法:找到文件vue.config.js,打开文件:修改lintOnSave为false,如果没有就添加lintOnSave为false…

    2022年5月15日
    53
  • Sicily 1700. Ping

    Sicily 1700. Ping

    2021年8月23日
    77
  • 反掩码有什么作用?通配符掩码有什么作用?

    反掩码有什么作用?通配符掩码有什么作用?反掩码是指路由器使用的通配符掩码与源或目标地址相匹配,与子网掩码正好相反。就像子网掩码告诉路由器IP地址中哪个属于网络号一样,通配符掩码告诉路由器,为了判断匹配,需要检查IP地址中有多少位。这种地址掩码可以使用两个32位的数字来确定IP地址的范围。这个非常方便,因为如果没有掩码,你必须在每个匹配的IP客户地址上添加一个单独的访问列表语句。它会导致许多额外的输入和路由器的额外处理过程。因此地址掩码非常有用。在子网掩码中,将一个掩码设置为1,表示IP地址对应的位置属于网络地址部分。相反,在访..

    2022年7月19日
    18
  • 【Dart学习】–之Runes与Symbols相关方法总结「建议收藏」

    【Dart学习】–之Runes与Symbols相关方法总结「建议收藏」一,Runes在Dart中,Runes代表字符串的UTF-32字符集,另一种StringsUnicode为每一个字符、标点符号、表情符号等都定义了一个唯一的数值由于Dart字符串是UTF-1

    2022年8月6日
    10
  • 【转载】HTTP和SOAP完全就是两个不同的协议

    【转载】HTTP和SOAP完全就是两个不同的协议

    2021年11月18日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号