线程是轻量级的进程。使用线程能提供应用系统的效率。为了使用多线程需要引入System
命名空间中的Threading 命名空间。System.Threading 命名空间包含需要使用多线程
的地方。

using System;
using System.Threading;
public class MyThread {
public static void Thread1() {
for (int i = 0; i < 10; i++) {
Console.WriteLine("Thread1 {0}", i);
}
}
public static void Thread2() {
for (int i = 0; i < 10; i++) {
Console.WriteLine("Thread2 {0}", i);
}
}
}
public class MyClass {
public static void Main() {
Console.WriteLine("Before start thread");
Thread tid1 = new Thread(new ThreadStart(MyThread.Thread1));
Thread tid2 = new Thread(new ThreadStart(MyThread.Thread2));
tid1.Start();
tid2.Start();
}
}

这个程序有一个MyThread 类包括两个静态方法Thread1 和Thread2。为了创建线程需
要创建Thread 类对象。Thread 类的构造方法是ThreadStart 的引用。这个构造方法可
能会发出两种类型的异常;当参数是一个空引用时引发ArgumentNullException 异常
或当程序不允许创建线程的SecurityException 异常。
Thread类的参数是ThreadStart 的引用。当线程开始时执行ThreadStart 指向的方法。
ThreadStart 的参数名是函数名,作为线程的函数。Thread1 是一个静态方法可以使用

类名来访问不需要要创建类的对象。线程开始执行Thread 类的Start()方法。下面是程
序的输出:
Before start thread
Thread1 0
Thread1 1
Thread1 2
Thread1 3
Thread1 4
Thread1 5
Thread1 6
Thread1 7
Thread1 8
Thread1 9
Thread2 0
Thread2 1
Thread2 2
Thread2 3
Thread2 4
Thread2 5
Thread2 6
Thread2 7
Thread2 8
Thread2 9
线程的方法可以不是静态方法。在下面的例子中使用非静态方法需要创建类的对象。

using System;
using System.Threading;
public class MyThread {
public void Thread1() {
for (int i = 0; i < 10; i++) {
Console.WriteLine("Thread1 {0}", i);
}
}
public void Thread2() {
for (int i = 0; i < 10; i++) {
Console.WriteLine("Thread2 {0}", i);
}
}
}


public class MyClass {
public static void Main() {
Console.WriteLine("Before start thread");
MyThread thr = new MyThread();
Thread tid1 = new Thread(new ThreadStart(thr.Thread1));
Thread tid2 = new Thread(new ThreadStart(thr.Thread2));
tid1.Start();
tid2.Start();
}
}

这个程序的输出和上一个的输出相同。
不需要为两个线程创建两个方法。可以使用一个方法为两个线程类创建两个线程