添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

问题描述

C#/.NET应用程序编程开发中,我们可以 new Thread() 来开启多线程,其中 Thread 类可以接收 ThreadStart 类型的参数,如下:

public static void Main()
    var th = new Thread(new ThreadStart(() =>
        Thread.Sleep(5000);
        Console.WriteLine("sub thread task running...");
        IsBackground = true
    th.Start();
    Console.WriteLine("main thread...");
    Console.ReadLine();

这里的ThreadStart类型无法传递参数,如果我们要向ThreadStart传递参数,应该如何实现呢?

方案一

使用ParameterizedThreadStart类型作为Thread()构造函数的参数,如下:

using System;
using System.Threading;
namespace ConsoleApp2
    class Program
        public static void Main()
            var name = "Rector";
            var th = new Thread(new ParameterizedThreadStart(DoWork))
                IsBackground = true
            th.Start(name);
            Console.WriteLine("main thread run here...");
            Console.ReadLine();
        private static void DoWork(object name)
            Thread.Sleep(2000);
            Console.WriteLine("sub thread task running,parameter is {0}...", name);

方案二

使用ParameterizedThreadStart传递参数时,只能传递一个object的参数,如果要传递多个并且是强类型的参数时ParameterizedThreadStart的方式无能为力了。

查看Thread类的构造函数可知,Thread有3个被重载的构造函数,我们可以使用ThreadStart类型的lambda方式实现多参数传递,如下:

using System;
using System.Threading;
namespace ConsoleApp2
    class Program
        public static void Main()
            var firstName = "Rector";
            var lastName = "Liu";
            var th = new Thread(() => DoWork(firstName, lastName))
                IsBackground = true
            th.Start();
            Console.WriteLine("main thread...");
            Console.ReadLine();
        private static void DoWork(string firstName, string lastName)
            Thread.Sleep(2000);
            Console.WriteLine("sub thread task running,firstName is:{0}, lastName is:{1}...", firstName, lastName);
                

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: C#/.NET应用程序编程开发中如何判断一个字符串已经被HttpUtility.UrlEncode编码?

下一篇: C#/.NET应用程序编程开发中如何将一个数组转换成用逗号分隔的字符串?

本文永久链接码友网 » C#/.NET应用程序编程开发中多线程ThreadStart如何传递参数?

站点相关: 最新资讯 · 开发者必备 · 最多阅读 · 标签云 · 关于码友网 · 文章RSS · 资讯RSS · 问答RSS · 免责声明 · 网站地图

友情链接: 果糖网 · WebYang.NET · 十有三博客 · 放肆雷特 · 架构师 · walterlv · lindexi · 51ASPX

联系我们: