.NET中ThreadStart和ParameterizedThreadStart区别「建议收藏」

.NET中ThreadStart和ParameterizedThreadStart区别「建议收藏」ThreadStart:       ThreadStart这个委托定义为voidThreadStart(),也就是说,所执行的方法不能有参数。ThreadStartthreadStart=newThreadStart(Calculate);Threadthread=newThread(threadStart);thread.Start();publicvoid

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



ThreadStart:

        ThreadStart这个委托定义为void ThreadStart(),也就是说,所执行的方法不能有参数。

ThreadStart threadStart=new ThreadStart(Calculate);Thread thread=new Thread(threadStart);thread.Start();public void Calculate(){ double Diameter=0.5; Console.Write("The Area Of Circle with a Diameter of {0} is {1}"Diameter,Diameter*Math.PI);}

        定义了一个ThreadStart类型的委托,这个委托制定了线程需要执行的方法: Calculate,在这个方法里计算了一个直径为0.5的圆的周长,并输出.这就构成了最简单的多线程的例子。

ParameterThreadStart:

        ParameterThreadStart的定义为void ParameterizedThreadStart(object state),使用这个这个委托定义的线程的启动函数可以接受一个输入参数,具体例子如下 :

ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Calculate)
Thread thread=new Thread() ;
thread.Start(0.9);
public void Calculate(object arg)
{
double Diameter=double(arg);
Console.Write("The Area Of Circle with a Diameter of {0} is {1}"Diameter,Diameter*Math.PI);
}

          Calculate方法有一个为object类型的参数,虽然只有一个参数,而且还是object类型的,使用的时候尚需要类型转换,但是好在可以有参数了,并且通过把多个参数组合到一个类中,然后把这个类的实例作为参数传递,就可以实现多个参数传递.如下所示:

class AddParams
{
    public int a, b;

    public AddParams(int numb1, int numb2)
    {
      a = numb1;
      b = numb2;
    }
}
#endregion

class Program
{
    static void Main(string[] args)
    {
      Console.WriteLine("***** Adding with Thread objects *****");
      Console.WriteLine("ID of thread in Main(): {0}",
        Thread.CurrentThread.ManagedThreadId);

      AddParams ap = new AddParams(10, 10);
      Thread t = new Thread(new ParameterizedThreadStart(Add));
      t.Start(ap);
      Console.ReadLine();
    }

    #region Add method
    static void Add(object data)
    {
      if (data is AddParams)
      {
        Console.WriteLine("ID of thread in Main(): {0}",
          Thread.CurrentThread.ManagedThreadId);

        AddParams ap = (AddParams)data;
        Console.WriteLine("{0} + {1} is {2}",
          ap.a, ap.b, ap.a + ap.b);
      }
    }
    #endregion
}
}

出处:http://www.cnblogs.com/qixuejia/archive/2015/02/09/4281079.html

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 这几天收到了同学们提交的赛道设计图纸[通俗易懂]

     §01室外越野▲图1.1室外越野赛道▲图1.2室外越野赛道设计图纸 §02单车拉力▲图2.1单车拉力快车道 §03室内PVC赛道一、坡道1、背景布下的桥还有,这样的坡道比赛时可以用吗?本来是防止单车摔下来的。▲图3.1蓝布下的坡道回复:这是允许的。2、桥连着桥卓大大,这个可以么,桥接桥?▲图3.2连体桥回复:这是允许的。 §04相关问题一、环境改变卓大大好,,我们现在的场地上面

    2022年4月9日
  • 求最大公约数和最小公倍数的算法[通俗易懂]

    求最大公约数和最小公倍数的算法[通俗易懂]在刷题的过程中,经常会遇到很多关于最小公倍数和最大公约数的问题。以下是用C语言写的求最大公约数和最小公倍数的算法。最大公约数。求最大公约数有三种算法。1、辗转相除法。   辗转相除法又称为欧几里德算法。这个方法大家已经都已经在数学上学过了。具体的步骤就是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是…

    2022年5月13日
  • 区块链体验的几点建议,CIC共识网络让保险操作更智能

    区块链体验的几点建议,CIC共识网络让保险操作更智能自从双持了iOS和Android之后,就开始了CIC共识网络App在不同平台的玩耍,使用了一段时间之后,掰扯掰扯下自己的使用体验。1、先说下邀请安装体验,邀请人分别网址邀请和二维码邀请,就CIC的邀请方式有2种,比较全面。但根据本人使用的多款区块链APP来看,目前CIC的邀请不论是网址邀请,还是二维码邀请,广告词内容和二维码界面基本没什么特色,只是平白的介绍而已。一是广告词缺乏吸引客户主动注册的文…

    2022年5月28日
  • python运维开发实战「建议收藏」

    python运维开发实战「建议收藏」python运维和开发实战-基础篇python运维和开发实战-基础篇课程链接如下:通过如下链接地址购买课程可享受优惠哈~限时优惠,原价499元,现价只需125元https://edu….

    2022年7月12日
  • MATLAB(R2021a)软件下载和安装教程[通俗易懂]

    MATLAB(R2021a)软件下载和安装教程[通俗易懂][名称]:MatlabR2021a[大小]:17.11GB[语言]:简体中文[安装环境]:Win7/Win8/Win10[64位下载链接]:https://pan.baidu.com/s/1jnp9OeXZRnwScGU68K03CQ[提取码]:1234[阿里云下载地址]:(推荐使用)https://www.aliyundrive.com/s/BYPHMoAiLqq[备用链接]:若下载链接失效,获取最新下载链接请到公众号『软件科技汇』后台回复:matlab软件..

    2022年7月26日
  • 关于解决token过期失效问题「建议收藏」

    关于解决token过期失效问题「建议收藏」关于解决token过期失效问题,用户对token无感知(实现免登陆)一、先认识下token二、整体思路三、实现步骤1.理清各个文件作用2.路由导航守卫3.封装localStorage方法4.vuex5.封装axios实现请求拦截器和响应拦截器(重点部分)四、小结一、先认识下token二、整体思路三、实现步骤1.理清各个文件作用2.路由导航守卫设置用户有无token访问主页,并且登录成功回到目标页importVuefrom’vue’importVueRouterfrom’v

    2022年9月12日

发表回复

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

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