【C#多线程】1.Thread类的使用及注意要点
Thread随便讲讲
因为在C#中,Thread类在我们的新业务上并不常用了(因为创建一个新线程要比直接从线程池拿线程更加耗费资源),并且在.NET4.0后新增了Task类即Async与await关键字,使得我们基本不再用Thread了,不过在学习多线程前,有必要先了解下Thread类,这里就先随便讲讲Thread。
1.使用多线程的几种方式
多线程Thread类只支持运行两种方法,一种是无参数并且无返回值的方法,第二种是有一个Object类型参数(有且只能有一个参数,并且必须是Object类型)且无返回值的方法。如果想让多线程方法携带多个参数,可以将多个参数放入一个集合或数组中传入方法。
下面例子使用了控制台来演示多线程的简单使用:
using System; using System.Threading; namespace ConsoleApplication1 { class Program { //无参数无返回值方法 public static void DoSomething() { for (int i = 0; i < 100; i++) { Thread.Sleep(500); } } //有参数无返回值方法 public static void DoSomethingWithParameter(object obj) { for (int i = 0; i < (int)obj; i++) { Console.WriteLine(Thread.CurrentThread.ManagedThreadId); Thread.Sleep(500); } } static void Main(string[] args) { //获取主线程ID int currentThreadId = Thread.CurrentThread.ManagedThreadId; Console.WriteLine($"---------主线程<{currentThreadId}>开始运行---------"); //多线程运行无参数方法方式1 ThreadStart ts = DoSomething;//ThreadStart是一个无参数,无返回值的委托 Thread thread1 = new Thread(ts); thread1.Start(); //多线程运行无参数方法方式2 Thread thread2 = new Thread(DoSomething);//可省略ThreadStart thread2.Start(); //多线程运行有参数方法方式1 //ParameterizedThreadStart是一个有一个Object类型参数,但是无返回值的委托。 ParameterizedThreadStart pts = DoSomethingWithParameter; Thread thread3 = new Thread(pts); thread3.Start(100); //多线程运行有参数方法方式2 //可以省略ParameterizedThreadStart Thread thread4 = new Thread(DoSomethingWithParameter); thread4.Start(100); //还可以使用lamda表达式简化多线程写法 new Thread(() => { for (int i =