Loading

摘要: 单元测试异步代码 单元测试异步代码需要与编写良好的异步 C# 代码相同的方法。如果您需要复习如何使用异步方法,可以查看第 5 章。 在为异步方法编写单元测试时,您将使用await 关键字等待该方法完成。 这要求您的单元测试方法是异步的并返回任务。 就像其他 C# 代码一样,不允许创建 async v 阅读全文
posted @ 2024-03-30 04:21 F(x)_King 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 取消托管线程 取消 .NET 中的异步工作基于取消令牌的使用。 令牌是一个简单的对象,用于指示已向另一个线程发出取消请求。 CancellationTokenSource 对象管理这些请求并包含一个令牌。 如果要使用同一触发器取消多个操作,则应向所有要取消的线程提供相同的令牌。 Cancellati 阅读全文
posted @ 2024-03-30 04:17 F(x)_King 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 引入多线程调试 调试是每个 .NET 开发人员技能的关键组成部分。 没有人会编写没有错误的代码,将多线程结构引入到您的项目中只会增加引入的机会 错误。 由于 .NET 和 C# 添加了更多对并行编程和并发的支持,Visual Studio 添加了更多调试功能来支持这些构造。 如今,Visual St 阅读全文
posted @ 2024-03-30 04:05 F(x)_King 阅读(419) 评论(0) 推荐(0) 编辑
摘要: BlockingCollection BlockingCollection<T> 是最有用的并发集合之一。 正如我们在第 7 章中看到的,BlockingCollection<T> 被创建为 .NET 生产者/消费者模式的实现。 在创建不同类型的示例项目之前,让我们回顾一下该集合的一些细节。 Blo 阅读全文
posted @ 2024-03-30 03:59 F(x)_King 阅读(93) 评论(0) 推荐(0) 编辑
摘要: PLINQ 简介 PLINQ 是 LINQ 的一组 .NET 扩展,允许通过利用线程池并行执行部分 LINQ 查询。 PLINQ 实现提供所有可用 LINQ 查询操作的并行版本。 与 LINQ 查询一样,PLINQ 查询提供延迟执行。 这意味着在需要枚举对象之前不会对其进行查询。 如果您不熟悉 LI 阅读全文
posted @ 2024-03-30 03:52 F(x)_King 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 介绍 TPL 数据流库 TPL Dataflow 库的历史与 TPL 本身一样长。 它于 2010 年 .NET Framework 4.0 达到其 RTM 里程碑后发布。 数据流库的成员是 System.Threading.Tasks.Dataflow 命名空间。 数据流库旨在构建 TPL 中提供 阅读全文
posted @ 2024-03-30 03:44 F(x)_King 阅读(119) 评论(0) 推荐(0) 编辑
摘要: TPL 入门 TPL 由添加到 .NET Framework 4.0 中的 System.Threading 和 System.Threading.Tasks 命名空间的类型组成。 TPL 提供的功能使 .NET 开发人员的并行性和并发性变得更简单。 无需在代码中管理 ThreadPool 任务。 阅读全文
posted @ 2024-03-30 03:33 F(x)_King 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 有关 .NET 中的异步编程的更多信息 通常引入异步代码的场景有两种: • I/O 密集型操作:这些操作涉及从网络或磁盘获取的资源。 • CPU 密集型操作:这些是内存中的 CPU 密集型操作。 在本节中,我们将创建一些针对每种类型的操作使用 async 和 wait 的实际示例。 无论您是等待外部 阅读全文
posted @ 2023-10-14 11:22 F(x)_King 阅读(90) 评论(0) 推荐(1) 编辑
摘要: 利用后台线程 在第一章中,我们学习了如何创建后台线程并讨论了它们的一些用途。 后台线程的优先级低于进程的主线程和其他线程池线程。此外,活动的后台线程不会阻止用户或系统终止应用程序。 这意味着后台线程非常适合执行以下任务: • 写入日志和分析数据 • 监控网络或文件系统资源 • 将数据读入应用程序 不 阅读全文
posted @ 2023-10-14 11:16 F(x)_King 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 处理静态对象 在 .NET 中处理静态数据时,涉及托管线程时需要了解一些重要的事情。 静态数据和构造函数 关于从托管线程访问静态数据需要了解的一项重要内容与构造函数有关。 在访问任何类的静态成员之前,必须先完成其静态构造函数的运行。 运行时将阻止线程执行,直到静态构造函数运行为止,以确保所有必需的初 阅读全文
posted @ 2023-10-13 21:22 F(x)_King 阅读(26) 评论(0) 推荐(0) 编辑