1. 使用 Thread 类
Thread 类是.NET框架中用于表示和控制线程的最基本方式。
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread thread = new Thread(new ThreadStart(DoWork));
thread.Start();
thread.Join(); // 等待线程完成
}
static void DoWork()
{
Console.WriteLine("Thread is running.");
}
}
2. 使用 ParameterizedThreadStart
如果需要向线程传递参数,可以使用 ParameterizedThreadStart 委托。
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread thread = new Thread(new ParameterizedThreadStart(DoWorkWithParameter));
thread.Start("Hello, World!");
thread.Join(); // 等待线程完成
}
static void DoWorkWithParameter(object parameter)
{
string message = (string)parameter;
Console.WriteLine(message);
}
}
3. 使用 ThreadPool
ThreadPool 提供了一种更高效的线程管理方式,它管理一组可用的线程,这些线程可以被重复利用来执行任务。
using System;
using System.Threading;
class Program
{
static void Main()
{
ThreadPool.QueueUserWorkItem(DoWork);
// 防止主线程退出
Thread.Sleep(2000);
}
static void DoWork(object state)
{
Console.WriteLine("Thread from ThreadPool is running.");
}
}
4. 使用 Task 并行库(TPL)
Task 类是.NET Framework 4.0引入的,提供了一种更现代和高级的并行编程模型。
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
Task task = Task.Run(() => DoWork());
task.Wait(); // 等待任务完成
}
static void DoWork()
{
Console.WriteLine("Task is running.");
}
}
5. 使用 async 和 await
async 和 await 关键字是C# 5.0引入的,提供了一种更简洁和易于理解的异步编程方式。虽然它们不直接创建线程,但它们可以在后台线程上执行异步操作。
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
await DoWorkAsync();
}
static async Task DoWorkAsync()
{
await Task.Run(() =>
{
Console.WriteLine("Async method is running.");
});
}
}
6. 使用 BackgroundWorker
BackgroundWorker 类提供了一个简单的方式来在后台线程上执行操作,并且支持进度报告和取消操作。
using System;
using System.ComponentModel;
class Program
{
static void Main()
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += Worker_DoWork;
worker.RunWorkerCompleted += Worker_RunWorkerCompleted;
worker.RunWorkerAsync();
// 防止主线程退出
Console.ReadLine();
}
private static void Worker_DoWork(object sender, DoWorkEventArgs e)
{
Console.WriteLine("BackgroundWorker is running.");
}
private static void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Console.WriteLine("BackgroundWorker has completed.");
}
}

被折叠的 条评论
为什么被折叠?



