使用Thread類可以建立和控制線程。使用Thread類需要引入系統的System.Threading命名空間。
下面簡單樣本
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace ThreadDemo{ class Program { static void ThreadMain() { Console.WriteLine("Running in the thread {0}, id: {1}",Thread.CurrentThread.Name, Thread.CurrentThread.ManagedThreadId); } static void Main(string[] args) { Thread t1 = new Thread(ThreadMain); t1.Name = "MyThread"; t1.Start(); Console.WriteLine("This is the Main thread"); Console.ReadKey(); } }}
這裡不能保證哪個結果顯輸出,線程由作業系統調度,每次哪個線程在前面是不同的。
使用Thread類建立的線程預設的是前台線程,線程池中的線程總是後台線程。
前台線程在Main方法結束後,還會執行,一直到所有前台線程都完成任務了,程式才會結束。
後台線程在Main方法結束的時候,也會隨之一起結束。
後台線程非常適合完成背景工作。例如關閉WORD應用程式,拼字檢查繼續運行其進程就沒有意義。這樣可以將這個進程設定為後台進程。
通過設定線程的IsBackground屬性可以設定是否為後台進程。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace ForegroundThread{ class Program { static void Main(string[] args) { Thread t1 = new Thread(ThreadMain); t1.Name = "MyNewThread1"; t1.IsBackground = true; t1.Start(); Console.WriteLine("Main Thread ending now..."); } static void ThreadMain() { Console.WriteLine("Thread {0} started", Thread.CurrentThread.Name); Thread.Sleep(3000); Console.WriteLine("Thread {0} completed", Thread.CurrentThread.Name); } }}