C#中如何实现多线程和并发编程?

我正在学习C#编程,但目前还不熟悉如何实现多线程和并发编程。我想了解在C#中如何创建和管理多个线程,以便同时执行不同的任务或处理多个请求,同时也想了解如何避免并发问题,例如资源竞争、死锁等。请问哪位高手能够提供一些示例代码或方法,或推荐一些学习资源,来帮助我更好地理解和掌握C#中的多线程和并发编程?非常感谢!

提问时间:2023-08-17 16:18:18 编辑时间:2023-08-17 16:18:20 提问者: 梦之舞者
  • 梦里清风
    1

    在C#中实现多线程和并发编程可以使用Thread类来创建和管理线程,也可以使用Task类来执行异步操作。为避免并发问题,可以使用锁、互斥体、信号量等机制来控制线程的访问和资源的竞争。以下是一个简单的示例代码:

    using System;
    using System.Threading;
    
    class Program
    {
        static void Main(string[] args)
        {
            Thread thread1 = new Thread(new ThreadStart(Method1));
            Thread thread2 = new Thread(new ThreadStart(Method2));
            Console.WriteLine("Starting threads...");
            thread1.Start();
            thread2.Start();
            thread1.Join();
            thread2.Join();
            Console.WriteLine("Threads finished.");
        }
    
        static void Method1()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("Thread 1 is running...");
                Thread.Sleep(1000);
            }
        }
    
        static void Method2()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("Thread 2 is running...");
                Thread.Sleep(1000);
            }
        }
    }
    

    可以使用Join方法等待线程执行完成以便对结果进行处理或打印。

    另外,可以参考以下学习资源:

    • 《C#多线程编程实战》
    • 官方文档:https://docs.microsoft.com/en-us/dotnet/standard/threading/
    • 《C#并发编程实战》
    回答时间:2023-08-17 16:18:24