如何使用 C# 中的异步和多线程处理条码

How to Use Async and Multithread

This article was translated from English: Does it need improvement?
Translated
View the article in English

术语异步多线程操作经常被混淆。 两种方法旨在通过优化系统资源利用率和减少运行时间来提高程序性能和效率。然而,它们在方法,机制和预期用例方面有所不同。 IronBarcode支持这两种方法。 本文探讨了它们之间的区别以及如何使用IronBarcode实现它们。

快速入门:异步和多线程条码阅读示例

使用这个单行示例即可立即开始使用IronBarcode。 它展示了如何轻松结合异步读取和多线程选项,以最少的设置平行扫描多个条码图像。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. Copy and run this code snippet.

    var results = await IronBarCode.BarcodeReader.ReadAsync(imagePaths, new IronBarCode.BarcodeReaderOptions { Multithreaded = true, MaxParallelThreads = 4, ExpectMultipleBarcodes = true });
  3. Deploy to test on your live environment

    Start using IronBarcode in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

最小工作流程(5步)

  1. 下载支持异步和多线程的C#库
  2. 使用ReadAsyncReadPdfAsync方法从图像和PDF中异步读取条码
  3. 启用多线程,将Multithreaded属性设置为'true'
  4. 使用MaxParallelThreads属性指定并行线程数
  5. 检查普通、异步和多线程条码阅读之间的性能比较

## 异步读取条码示例 我们先来了解一下什么是异步读取以及它如何为用户带来好处。 异步读取使长期或阻塞操作能够进行而不会阻塞主线程的执行。 在C#中,用户可以使用`async`和`await`关键字与支持异步功能的方法。 这不会创建额外的线程,而是释放当前线程。 当主线程启动和管理任务时,它不需要专门用于单个任务。 当异步方法需要其参与时,会召唤主线程,从而在不需要的时候释放其去处理其他任务,例如I/O绑定任务如读写文件或进行网络请求。 以条码读取为例。 在这种情况下,涉及的步骤将是: - 读取文件 - 应用读取选项 - 解码条码 在“读取文件”步骤中,主任务可以被释放。 使用`ReadAsync`和`ReadPdfAsync`方法分别为图像和PDF文档异步读取条码。 ```csharp :path=/static-assets/barcode/content-code-examples/how-to/async-multithread-async.cs ``` 从上面的代码片段中,我们已实例化一个图像路径列表,以便由IronBarcode异步读取。 要读取图像,可以使用`BarcodeReader`类中的`ReadAsync`方法。 用户可以指定图像路径以及读取选项。 这种异步操作的方法也可用于读取PDF文档中的条码,称为`ReadPdfAsync`,它是同一类的一部分。 ## 多线程读取条码示例 与异步操作不同,多线程允许一个进程同时在多个线程中执行。 这意味着多线程将任务分配给多个线程,从而实现并发执行,而不是在单个线程中顺序执行一个进程。 然而,要使多线程运行,一台机器必须有多个CPU核心,因为这些核心用于独立执行线程。 与异步操作类似,多线程旨在提高应用程序的性能和响应能力。 在IronBarcode中,通过设置`Multithreaded`属性并使用BarcodeReaderOptions中的`MaxParallelThreads`指定并行执行的最大核心数来启用多线程。 `MaxParallelThreads`的默认值为4,可根据可用的CPU核心进行调整。
请注意要找出可用核心:任务管理器 -> 性能选项卡 -> 点击 CPU。 'Cores' 字段显示数量.
### 性能比较 ```cs :path=/static-assets/barcode/content-code-examples/how-to/async-multithread-multithread.cs ``` 现在,我们读取下面的两张图像,并比较普通、异步和多线程操作的读取时间。
![Image 2](/static-assets/barcode/how-to/async-multithread/sample2.webp) #### 示例图像
普通读取 异步读取 多线程读取(4核)
01.75秒 01.67秒 01.17秒
从比较表中可以明显看出,一旦实施异步和多线程读取,性能显著提高。 然而,这两种操作服务于不同的目的和方法。 因此,需要用户根据他们正在构建的应用程序确定哪种方法更适合。 最后,可能会出现单个文档上有多个条码的情况。 有关更多信息,请参阅[读取多个条码](/csharp/barcode/how-to/read-multiple-barcodes/)指南。 For more information, visit the [Read Multiple Barcodes](/csharp/barcode/how-to/read-multiple-barcodes/) guide.

常见问题解答

如何在 C# 中实现异步条形码读取?

您可以通过使用 IronBarcode 的 ReadAsyncReadPdfAsync 方法在 C# 中实现异步条形码读取。这些方法允许从图像和 PDF 读取条形码,而不会阻塞主线程。

启用条形码处理多线程的步骤是什么?

要启用条形码处理多线程,请将 Multithreaded 属性设置为 true 并配置 MaxParallelThreads 属性,以高效利用多个 CPU 核心。IronBarcode 支持这些配置。

使用异步操作读取条形码有什么优点?

在条形码读取中使用异步操作允许任务继续进行而不会阻塞主线程,从而增强应用程序的响应能力,特别是在 I/O 绑定操作中。IronBarcode 的异步方法通过使用 asyncawait 关键字来促进这一点。

多线程如何提高条形码读取性能?

多线程通过允许任务在多个 CPU 核心上并发执行,从而加快处理速度,提高条形码读取性能。这对于 CPU 绑定任务尤其有利。

多线程条形码读取中使用的默认线程数是多少?

在 IronBarcode 中,默认情况下用于多线程条形码读取的线程数是 4,可以根据您的 CPU 能力通过 MaxParallelThreads 属性进行调整。

在哪里可以下载支持异步和多线程条形码读取的 C# 库?

您可以从 .NET 包管理器 NuGet 下载支持异步和多线程条形码读取的 C# 库,网址为 https://nuget.org/packages/IronPdf/。该库提供异步和多线程操作的功能。

条形码读取可以在所有系统上使用多线程吗?

在具有多个 CPU 核心的系统上可以使用多线程,因为这些核心可以实现线程的并发处理。IronBarcode 的多线程功能利用了这些系统。

如何比较正常、异步和多线程条形码读取的性能?

性能比较表明,正常读取速度最慢,异步读取速度更快,多线程读取由于利用了多个 CPU 核心而最快。IronBarcode 提供这些读取选项以增强性能。

在文档中读取多个条形码的最佳方法是什么?

IronBarcode 提供了全面支持读取文档中的多个条形码。有关详细的指导,请参考文档 /csharp/barcode/how-to/read-multiple-barcodes/。

Hairil Hasyimi Bin Omar
软件工程师
如所有伟大的工程师一般,Hairil 是个热心的学习者。他正在提高对 C#、Python 和 Java 的知识,并利用这些知识为 Iron Software 团队成员增值。Hairil 从马来西亚的玛拉工业大学加入 Iron Software 团队,获得化学与工艺工程学士学位。
准备开始了吗?
Nuget 下载 1,935,276 | 版本: 2025.11 刚刚发布