在C#中,多线程编程是一种处理并发任务和提高程序性能的重要技术。C# 提供了多种方式来实现多线程编程,其中最常见的包括使用 Thread 类、ThreadPool、Task Parallel Library (TPL) 和 async/await 异步编程模型。

1. 使用 Thread 类:
using System;
using System.Threading;

class Program
{
    static void Main()
    {
        // 创建并启动新线程
        Thread newThread = new Thread(WorkerMethod);
        newThread.Start();

        // 主线程继续执行其他工作
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Main Thread: " + i);
            Thread.Sleep(1000);
        }

        Console.ReadLine();
    }

    // 新线程执行的方法
    static void WorkerMethod()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Worker Thread: " + i);
            Thread.Sleep(1000);
        }
    }
}

2. 使用 ThreadPool:
using System;
using System.Threading;

class Program
{
    static void Main()
    {
        // 使用线程池启动新任务
        ThreadPool.QueueUserWorkItem(WorkerMethod);

        // 主线程继续执行其他工作
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Main Thread: " + i);
            Thread.Sleep(1000);
        }

        Console.ReadLine();
    }

    // 线程池中执行的方法
    static void WorkerMethod(object state)
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Worker Thread: " + i);
            Thread.Sleep(1000);
        }
    }
}

3. 使用 Task Parallel Library (TPL):
using System;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        // 使用 Task 启动新任务
        Task.Run(() => WorkerMethod());

        // 主线程继续执行其他工作
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Main Thread: " + i);
            Task.Delay(1000).Wait();
        }

        Console.ReadLine();
    }

    // Task 执行的方法
    static void WorkerMethod()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Worker Thread: " + i);
            Task.Delay(1000).Wait();
        }
    }
}

4. 使用 async/await 异步编程:
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // 异步方法
        Task workerTask = WorkerMethodAsync();

        // 主线程继续执行其他工作
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Main Thread: " + i);
            await Task.Delay(1000);
        }

        // 等待异步方法完成
        await workerTask;

        Console.ReadLine();
    }

    // 异步方法
    static async Task WorkerMethodAsync()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Worker Thread: " + i);
            await Task.Delay(1000);
        }
    }
}

以上是一些简单的多线程示例。选择适当的多线程方式取决于具体的需求和情境,确保在多线程编程中处理好线程同步和避免竞态条件等问题。


转载请注明出处:http://www.zyzy.cn/article/detail/6371/C#