C# 单线程基础:进程、线程概念与 Thread 类使用示例

周叙
周叙
发布时间:2026-10-14 | 1人浏览过
原创

在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 对象来创建线程。注意区分有参和无参委托的使用:

  1. 无参线程 (threadA):使用 ThreadStart 代理,指向无参方法。
  2. 有参线程 (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#多线程开发的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表