构造有参数的线程ParameterizedThreadStart

发布时间:2025-12-09 13:55:27 浏览次数:4

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

我们通过线程对象的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("后台程序退出");        }    }

既然我们传入的是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("后台程序退出");        }

输出结果为:

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

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477