C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行。一个C#程序开始于一个单线程,它是由CLR和操作系统自动创建的,并具有多线程创建额外的线程。
除非被指定,否则所有的例子都假定以下命名空间被引用:
using System.Threading;
这个要加到引用中,否则报错、。。。
尝试一个无线输出x与y的程序,结果为:
不关闭窗口则输出一直不停止
在线程的启动中:
实例化Thread需要提供一个委托,在实例化这个委托时所用到的参数是线程将来启动时要运行的方法。
在.net中可以尝试两种启动线程的方式,一种是不带参数的启动方式,另一种是带参数的启动的方式。
1. 不带参数的启动方式:
如果启动参数时无需其它额外的信息,可以使用ThreadStart来实例化Thread,:
输出为:
2. 带参数的启动方法
如果要在实例化线程时要带一些参数,就不能用ThreadStart委托作为构造函数的参数来实例化Thread了,而要ParameterizedThreadStart委托。
它也是线程启动时要执行的方法,但它在实例化时可以用一个带有一个Object参数的方法作为构造函数的参数,而实例化ThreadStart时所用到的方法则无参。。。
这里在实现的时候定义了程序的暂停间隔,可以实现线程在运行过程中间隔时间的控制:
输出结果为: