构造有参数的线程就得需要用到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
今天的文章构造有参数的线程ParameterizedThreadStart分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33462.html