c#使用多线程的几种方式示例详解


在C#中,使用多线程主要有以下几种方式:

### 1. 使用`Thread`类

这是最直接的方式,通过实例化`System.Threading.Thread`类来创建新线程。


using System;
using System.Threading;

class Program
{
    static void Main(string[] args)
    {
        Thread thread = new Thread(new ThreadStart(DoWork));
        thread.Start();

        // 主线程继续执行
        Console.WriteLine("主线程继续执行其他任务...");
    }

    static void DoWork()
    {
        Console.WriteLine("在子线程中执行工作...");
    }
}

### 2. 使用`ThreadPool`

`ThreadPool`管理一组工作线程,这些线程可以执行排队的任务。它适用于执行大量短时间的任务。


using System;
using System.Threading;

class Program
{
    static void Main(string[] args)
    {
        ThreadPool.QueueUserWorkItem(DoWork);

        Console.WriteLine("已向线程池提交任务...");
    }

    static void DoWork(Object stateInfo)
    {
        Console.WriteLine("在线程池中执行工作...");
    }
}

### 3. 使用`Task`类

从.NET Framework 4开始,`Task`类提供了一种更现代的方式来执行异步操作。`Task`类属于`System.Threading.Tasks`命名空间。


using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        await Task.Run(() => DoWork());

        Console.WriteLine("主线程继续执行其他任务...");
    }

    static void DoWork()
    {
        Console.WriteLine("在Task中执行工作...");
    }
}

### 4. 使用`Parallel`类

`Parallel`类提供了一种数据并行的方式,它允许以并行方式执行多个操作。这适用于处理大量数据,且每个数据项的处理不依赖于其他数据项的场景。


using System;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        int[] numbers = { 1, 2, 3, 4, 5 };

        Parallel.ForEach(numbers, number =>
        {
            Console.WriteLine($"处理数字 {number}");
        });
    }
}

以上就是在C#中使用多线程的几种主要方式。每种方式都有其适用场景,你可以根据实际需求选择最合适的方式。