Thread:多线程编程基础详解

B站影视 韩国电影 2025-05-19 08:41 1

摘要:在 C# 开发中,多线程(Multithreading)是提升程序性能、实现并发执行的重要手段。而System.Threading.Thread类是 .NET 中用于创建和管理线程的核心类之一。本文将详细介绍Thread类的基本用法、常见操作以及注意事项,帮助

在 C# 开发中,多线程(Multithreading)是提升程序性能、实现并发执行的重要手段。而System.Threading.Thread类是 .NET 中用于创建和管理线程的核心类之一。本文将详细介绍Thread类的基本用法、常见操作以及注意事项,帮助你快速掌握 C# 多线程编程的基础。Thread类位于System.Threading命名空间中,用于表示操作系统中的一个独立执行线程。通过它,我们可以创建并控制线程的生命周期,设置优先级,处理异常等。简单来说,每个 Thread 实例代表一个正在运行或可以运行的线程1. 创建线程使用new Thread(ThreadStart)或new Thread(ParameterizedThreadStart)构造函数创建线程对象:using System;
using System.Threading;

classProgram
{
static voidMain
{
Thread thread = new Thread(DoWork);
thread.Start;
}

static voidDoWork
{
Console.WriteLine("线程正在运行...");
}
}object参数的方法委托2. 传递参数使用接收参数的方法需为类型:线程从创建到终止会经历多个状态,可以通过StartJoin

阻塞调用线程,直到该线程执行完毕

Sleep(int milliseconds)

让当前线程休眠指定毫秒数

Abort

强制终止线程(不推荐使用)

IsAlive

判断线程是否处于活动状态

Priority

设置或获取线程优先级(如 HighestNormalLowest)

CurrentThread

获取当前正在执行的线程对象

默认情况下,新创建的线程是前台线程,应用程序必须等待所有前台线程完成才会退出。

thread.IsBackground = true;

⚠️ 注意:后台线程不会阻止程序退出,适用于长时间运行但不影响主程序关闭的任务。

多个线程访问共享资源时可能会引发竞争条件(Race Condition),需要进行同步控制。

1. 使用 lock 锁定对象private static objectlockObj = newobject;

static voidSafeCounter
{
lock (lockObj)
{
// 安全访问共享资源
}
}2. 使用 MonitorMutexSemaphore 等高级同步机制

这些类提供了更灵活的线程同步方式,适合复杂场景。

虽然Thread类功能强大,但频繁创建和销毁线程开销较大。此时可以使用线程池(ThreadPool)来复用线程资源:ThreadPool.QueueUserWorkItem(state => {
Console.WriteLine("来自线程池的任务");
});

✅ 推荐用于执行轻量任务,不适合长时间阻塞的操作。

线程内部抛出的异常不能直接在主线程捕获,必须在线程方法中自行处理:

try
{
// 线程工作逻辑
}
catch (Exception ex)
{
Console.WriteLine($"线程发生异常: {ex.Message}");
}

❗未处理的线程异常会导致整个应用程序崩溃。

Thread类是 C# 多线程编程的基础工具,适合对线程有精细控制需求的场景。但在实际开发中,我们更推荐使用更高层次的抽象(如Task、Parallel、async/await)来简化并发编程。📌 掌握 类,是理解 .NET 并行编程的第一步。

来源:opendotnet

相关推荐