c#线程的创建与启动

今天在做c#有关的东东的时候,遇到了线程的一些小问题,现在把最简单的线程的创建与启动,简单的总结如下 :

首先,要用到Thread类。。。Thread类位于System.Threading命名空间中。(ps:恕我废话尴尬),在包含命名空间以后,就开始创建啦。

public void <span style="color:#ff0000;">RunThread</span>()
        {
            
           for(int i=1;i<=10;i++)//总共运行十次
            {
                textBox1.Text += "Sample的work线程在运行"+i+"\r\n";
                System.Threading.Thread.Sleep(1000);//每隔1秒运行一次
            }
        }

Thread  thread = new Thread(<span style="color:#ff0000;">RunThread</span>);
            thread.Start();

这样就可以啦,那么在来看看为毛要这么创建呢??? 生气 生气(ps: 下面这几句话是我,在某个大神的博客找到原句。。。

Thread类在实例化时,需要给其构造函数传入一个参数,用于指定线程开始执行的方法(线程入口)。我们查看Thread类的定义,发现其构造函数有以下重载形式:

在这里,我们使用下面这个构造函数来实例化Thread对象。

public Thread(ThreadStart start);  

该构造函数接受一个ThreadStart 类型的入参。

查看ThreadStart 类型的定义,如下

public delegate void ThreadStart();  

通过阅读定义,我们了解到,ThreadStart是一个委托类型,该委托类型封装的方法没有入参也没有返回值

ThreadStart委托类型的定义同样位于System.Threading命名空间中。

到这里,我们可以简单总结一下Thread对象的实例化过程,包含以下步骤:

  • 定义一个包含了要执行代码的方法,同时该方法必须具有和ThreadStart委托类型相同的签名(没有入参也没有返回值);
  • 创建ThreadStart委托类型的委托实例;
  • 实例化Thread对象,且将ThreadStart的委托实例作为入参传入Thread类的构造函数。
到这里小伙伴们知道了,前面我使用的创建线程的构造函数的类型,是委托。那么接下来我们还可以用另外一种很巧妙的方法,也很实用,来创建线程,代码如下所示:

            Thread thread1 = new Thread(delegate() {
                  textBox1.Text += "启动的新的第"+(num++)+"个线程"+"\r\n";
            });
            thread1.Start();

直接给Thread的参数中,传入一个 匿名方法,这样在我们不想另外写入口方法的时候,很方便的实现线程的创建,
ok,总结到此结束啦。。。革命尚未成功 吐舌头 委屈。。。。同志还需努力 奋斗 奋斗 奋斗。。。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值