C# 单线程基础:进程、线程概念与 Thread 类使用示例
在C#开发中,理解进程与线程的关系是进行并发编程的前提。本文梳理了基本概念,并通过实际代码演示如何利用Thread类创建和管理线程,包括无参调用、带参调用及后台线程的设置。
基础概念:进程与线程
当一个程序被打开运行时,它就成为一个进程(Process)。进程是操作系统进行资源分配和调度的基本单位。在进程中,包含一个或多个线程(Thread)。
- 线程:是CPU调度的最小单元,也是程序执行流的最小单元。一个标准线程由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成。
- 多线程:指在一个程序中同时运行多个不同的线程来执行不同任务。这允许单个程序创建多个并行执行的流,从而提高处理效率。
在C#应用程序中,开启应用即开启一个进程,该进程默认包含一个主线程。在此基础上,开发者可以创建额外的子线程来执行特定任务。
Thread 类常用方法
System.Threading.Thread 是C#中用于控制线程的核心类。以下是几个关键方法:
Start():启动线程,使其开始执行。Sleep(int):静态方法,暂停当前线程指定的毫秒数。Abort():通常用于终止一个线程(注意:该方法已过时,不建议在现代应用中广泛使用)。Suspend()/Resume():挂起或恢复线程。这些方法同样存在同步问题,现代编码中应使用信号量或锁替代。
第1步:准备命名空间与入口
首先引入必要的命名空间,并建立程序入口点。我们需要 System 处理控制台输出,System.Threading 处理线程逻辑。
第2步:定义业务方法
为了演示线程的功能,我们需要定义具体的执行逻辑。这里定义两个静态方法:
ThreadMethod():无参方法,循环打印字符“A”。ThreadMethodParameter(object Parameter):接受一个object类型参数的方法,用于演示带参线程。
第3步:创建并启动线程
在 Main 方法或业务入口中,通过实例化 Thread 对象来创建线程。注意区分有参和无参委托的使用:
- 无参线程 (
threadA):使用ThreadStart代理,指向无参方法。 - 有参线程 (
threadB):由于ParameterizedThreadStart仅支持单个object参数,需显式声明并使用Start(Object)传入数据。
此外,将 IsBackground 设置为 true 可将子线程设为后台线程。这意味着当所有前台线程(如主线程)结束时,后台线程会自动终止,无论其是否完成。
using System;
using System.Threading;
namespace StudyThread
{
class Program
{
static void Main(string[] args)
{
OneThread();
Console.ReadLine(); // 保持控制台打开
}
static void OneThread()
{
// 1. 创建无参线程
Thread threadA = new Thread(ThreadMethod);
threadA.IsBackground = true; // 设为后台线程
threadA.Start();
// 2. 创建带参线程
object threadParam = "P";
Thread threadB = new Thread(new ParameterizedThreadStart(ThreadMethodParameter));
threadB.IsBackground = true;
threadB.Start(threadParam); // 启动时传递参数
// 主线程执行自己的任务
Console.WriteLine("Main Write:M");
}
static void ThreadMethod()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("A");
}
}
/// <summary>
/// 带参数线程处理方法
/// </summary>
/// <param name="Parameter">只能定义一个object参数</param>
static void ThreadMethodParameter(object Parameter)
{
for (int j = 0; j < 10; j++)
{
Console.WriteLine("B" + Parameter);
}
}
}
}第4步:执行结果观察
运行上述代码,您将观察到控制台混合输出以下信息:
- M:由主线程直接打印。

- A:由
threadA打印。 - BP:由
threadB打印,其中 P 为传入的参数。
由于线程调度由操作系统决定,A、B 和 M 的输出顺序可能会交错出现,这正是多线程并发特性的体现。
总结
C#中的线程通过 Thread 类进行管理。通过选择合适的委托类型(ThreadStart 或 ParameterizedThreadStart),可以轻松启动无参或有参任务。理解后台线程的生命周期对于防止程序意外阻塞至关重要。以上就是C#线程入门教程之单线程介绍的详细内容,更多关于C#多线程开发的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









