0Pricing
C# Academy · 课时

理解线程和任务

探索线程和任务,在 C# 中管理并行处理

理解线程和任务 是 CoddyKit 上的免费 C# Academy 课时。 这是第 3 节课,共 5 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 5 节课。

线程与任务简介

理解线程和任务

欢迎来到下一课!在本课中,您将学习 C# 中的线程和任务,它们可以让您并发执行多个操作,从而获得更好的性能。让我们开始吧!

理解线程和任务 — 插图 1

什么是线程?

什么是线程?

线程处理是同时执行多个操作的过程。每个线程都代表应用程序中一个独立的控制流。

重点:线程处理通过利用多个处理器核心进行并发执行来提高性能。

创建并启动线程

创建并启动线程

您可以使用 Thread 类创建并启动线程。示例:

using System;
using System.Threading;

class Program {
    static void Main() {
        Thread thread = new Thread(PrintNumbers);
        thread.Start();

        Console.WriteLine("Main thread is running...");
    }

    static void PrintNumbers() {
        for (int i = 1; i <= 5; i++) {
            Console.WriteLine(i);
            Thread.Sleep(1000); // Pause for 1 second
        }
    }
}

任务简介

任务简介

任务相比线程为并发编程提供了更高级别的抽象。Task 类是 C# 中任务并行库(TPL)的一部分。

示例:创建并启动一个任务:

提示:与线程相比,任务更易于管理,并且提供更好的错误处理能力。

using System;
using System.Threading.Tasks;

class Program {
    static void Main() {
        Task task = Task.Run(() => {
            for (int i = 1; i <= 5; i++) {
                Console.WriteLine(i);
                Task.Delay(1000).Wait();
            }
        });

        Console.WriteLine("Main thread is running...");
        task.Wait(); // Wait for the task to complete
    }
}

使用并行循环 For 和 ForEach

使用并行循环 For 和 ForEach

C# 中的 Parallel 类可以让您并行执行循环,从而获得更好的性能。示例:

重点:对于可以并发执行的数据密集型任务,请使用 Parallel.For 和 Parallel.ForEach。

using System;
using System.Threading.Tasks;

class Program {
    static void Main() {
        Parallel.For(0, 5, i => {
            Console.WriteLine($"Processing {i} on thread {Task.CurrentId}");
        });

        Console.WriteLine("All tasks completed.");
    }
}

处理任务中的异常

处理任务中的异常

您可以使用 try-catch 代码块或 Task.Exception 属性捕获任务中的异常。示例:

using System;
using System.Threading.Tasks;

class Program {
    static void Main() {
        try {
            Task task = Task.Run(() => {
                throw new InvalidOperationException("Task failed!");
            });

            task.Wait();
        } catch (AggregateException ex) {
            Console.WriteLine("Error: " + ex.InnerException.Message);
        }
    }
}

练习挑战

练习挑战

创建一个程序,启动多个任务并行处理数字,然后打印它们的平方。示例:

using System;
using System.Threading.Tasks;

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

        Parallel.ForEach(numbers, number => {
            Console.WriteLine($"Square of {number}: {number * number}");
        });
    }
}

线程和任务最佳实践

线程和任务最佳实践

以下是一些最佳实践:

  • 对于高级并发,优先使用 Task 而不是 Thread。
  • 对于数据密集型操作,请使用 Parallel 类。
  • 正确处理异常,确保应用程序稳健可靠。
  • 限制线程或任务的数量,避免资源争用。

提示:当输入输出操作占主要部分时,请使用异步编程;对于受 CPU 限制的任务,请使用线程或任务。

做得很好!

做得很好!

恭喜您!您已经学习了 C# 中用于并发编程的线程和任务基础知识。在下一课中,我们将深入了解委托和 Lambda 表达式这两个用于函数式编程的强大特性。让我们继续编写代码吧!

理解线程和任务 — 插图 10

常见问题解答

「理解线程和任务」课时是免费的吗?

是的 — 「理解线程和任务」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 5 节课。

「理解线程和任务」这节课中我会学到什么?

探索线程和任务,在 C# 中管理并行处理 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C# Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 5 节。

「理解线程和任务」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C# Academy 课中编写并运行代码吗?

能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. C# 中的泛型
  2. Async 和 Await:使用异步代码
  3. 理解线程和任务
  4. 探索委托和 Lambda
  5. 理解 C# 中的反射
← 返回 C# Academy