在 C# 中,可以使用 System.Threading.Thread 类创建并启动一个新的线程。以下是创建和启动线程的方式以及示例代码:
创建并启动线程的步骤
- 创建线程对象
- 创建一个
Thread对象,并指定线程运行的方法(委托)。
- 创建一个
- 启动线程
- 使用
Thread.Start()方法启动线程。
- 使用
- 线程方法
- 线程执行的方法必须是无参数方法,或者使用
ParameterizedThreadStart传递参数。
- 线程执行的方法必须是无参数方法,或者使用
示例 1:创建无参数线程
using System;
using System.Threading;
class Program
{
static void Main()
{
// 创建线程,指定线程运行的方法
Thread thread = new Thread(PrintNumbers);
// 启动线程
thread.Start();
// 主线程继续运行
Console.WriteLine("Main thread is running...");
}
// 线程运行的方法
static void PrintNumbers()
{
for (int i = 1; i <= 5; i++)
{
Console.WriteLine($"Thread: {i}");
Thread.Sleep(500); // 模拟任务执行,暂停 500 毫秒
}
}
}
输出示例:
Main thread is running...
Thread: 1
Thread: 2
Thread: 3
Thread: 4
Thread: 5
示例 2:创建带参数的线程
使用 ParameterizedThreadStart 或 Lambda 表达式为线程传递参数。
方法一:ParameterizedThreadStart
using System;
using System.Threading;
class Program
{
static void Main()
{
// 创建线程,使用 ParameterizedThreadStart 传递参数
Thread thread = new Thread(PrintMessage);
thread.Start("Hello from the thread!");
Console.WriteLine("Main thread is running...");
}
// 接收参数的线程方法
static void PrintMessage(object message)
{
Console.WriteLine($"Thread message: {message}");
}
}
方法二:Lambda 表达式
using System;
using System.Threading;
class Program
{
static void Main()
{
// 使用 Lambda 表达式创建线程
Thread thread = new Thread(() =>
{
Console.WriteLine("Hello from the thread!");
});
thread.Start();
Console.WriteLine("Main thread is running...");
}
}
示例 3:使用线程控制(Join 和 IsAlive)
Join
Thread.Join() 等待线程执行完成。
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread thread = new Thread(PrintNumbers);
thread.Start();
Console.WriteLine("Waiting for the thread to complete...");
thread.Join(); // 等待线程执行完成
Console.WriteLine("Thread completed.");
}
static void PrintNumbers()
{
for (int i = 1; i <= 3; i++)
{
Console.WriteLine($"Thread: {i}");
Thread.Sleep(500);
}
}
}
IsAlive
检查线程是否仍在运行。
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread thread = new Thread(PrintNumbers);
thread.Start();
while (thread.IsAlive)
{
Console.WriteLine("Thread is still running...");
Thread.Sleep(200);
}
Console.WriteLine("Thread has finished.");
}
static void PrintNumbers()
{
Thread.Sleep(1000);
Console.WriteLine("Thread task completed.");
}
}
注意事项
-
线程生命周期
- 使用
Thread.Join()可以等待线程完成。 - 检查
Thread.IsAlive可以判断线程是否正在运行。
- 使用
-
线程安全
- 多线程访问共享资源时,需使用同步机制(如
lock)避免数据竞争。
- 多线程访问共享资源时,需使用同步机制(如
-
后台线程
- 设置
Thread.IsBackground = true将线程标记为后台线程,主线程退出时后台线程会自动终止。
- 设置
-
推荐使用
Task- 在现代 C# 开发中,推荐使用
Task或异步编程模型(async/await),它们提供了更高级的并发编程方式。
- 在现代 C# 开发中,推荐使用
总结
通过 System.Threading.Thread 类,您可以轻松地创建和启动线程,并对其进行控制。然而,在大多数情况下,使用 Task 或线程池更适合现代应用程序的需求,因为它们提供了更高的抽象和更好的资源管理。
12万+

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



