当前位置:实例文章 » C#开发实例» [文章]总结C#多线程(Thread和Task)

总结C#多线程(Thread和Task)

发布人:shili8 发布时间:2023-11-11 22:55 阅读次数:36

C#多线程是一种并发编程的方式,可以同时执行多个任务,提高程序的性能和响应能力。在C#中,我们可以使用Thread类和Task类来创建和管理多线程。

Thread类是C#中最基本的多线程编程类,它允许我们创建和控制线程的生命周期。下面是一个使用Thread类创建和启动线程的示例:

csharp
using System;
using System.Threading;

class Program
{
    static void Main()
    {
        // 创建一个新的线程
        Thread thread = new Thread(DoWork);

        // 启动线程
        thread.Start();

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

        // 等待子线程执行完毕
        thread.Join();

        Console.WriteLine(Press any key to exit.);
        Console.ReadKey();
    }

    static void DoWork()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine(Worker thread:  + i);
            Thread.Sleep(1000);
        }
    }
}


在上面的示例中,我们创建了一个新的线程,并使用Start方法启动它。主线程和子线程同时执行,每个线程都打印一些信息并休眠1秒钟。主线程还调用了Join方法,等待子线程执行完毕。

除了Thread类,C#还提供了Task类来简化多线程编程。Task类是对Thread类的封装,它提供了更高级的功能,如任务调度、异常处理和结果返回。下面是一个使用Task类创建和启动线程的示例:

csharp
using System;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        // 创建一个新的任务
        Task task = Task.Run(() => DoWork());

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

        // 等待任务执行完毕
        task.Wait();

        Console.WriteLine(Press any key to exit.);
        Console.ReadKey();
    }

    static void DoWork()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine(Worker thread:  + i);
            Task.Delay(1000).Wait();
        }
    }
}


在上面的示例中,我们使用Task.Run方法创建一个新的任务,并使用Wait方法等待任务执行完毕。主线程和任务同时执行,每个线程都打印一些信息并休眠1秒钟。主线程使用Task.Delay方法代替Thread.Sleep方法来休眠。

总结来说,C#多线程编程可以使用Thread类和Task类。Thread类是最基本的多线程编程类,它允许我们创建和控制线程的生命周期。Task类是对Thread类的封装,提供了更高级的功能,如任务调度、异常处理和结果返回。无论是使用Thread类还是Task类,我们都可以实现并发执行多个任务的目的,提高程序的性能和响应能力。

相关标签:c#java开发语言
其他信息

其他资源

Top