C# を使用したバーコードにおける非同期およびマルチスレッドの使用方法

IronBarcode を使って C# で非同期とマルチスレッドを使用する方法

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

用語Asyncマルチスレッド操作はしばしば混同されます。 両方の方法は、システムリソースの利用を最適化し、実行時間を短縮することで、プログラムのパフォーマンスと効率を向上させることを目的としていますが、アプローチ、メカニズム、使用目的が異なります。 IronBarcodeは両方のアプローチをサポートしています。 この記事では、それらの違いとIronBarcodeを使用してそれらを実装する方法を探ります。

クイックスタート: 非同期&マルチスレッドバーコード読み取り例

このワンラインの例を使用して、即座にIronBarcodeで開始できます。 非同期読み取りとマルチスレッドオプションを組み合わせて、最小限の設定で複数のバーコード画像を並行してスキャンする方法を示しています。

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronBarcode をインストールします

    PM > Install-Package BarCode

  2. このコード スニペットをコピーして実行します。

    var results = await IronBarCode.BarcodeReader.ReadAsync(imagePaths, new IronBarCode.BarcodeReaderOptions { Multithreaded = true, MaxParallelThreads = 4, ExpectMultipleBarcodes = true });
  3. 実際の環境でテストするためにデプロイする

    今すぐ無料トライアルでプロジェクトに IronBarcode を使い始めましょう
    arrow pointer


バーコードを非同期に読む例

まず、非同期読み取りとは何か、そしてそれがユーザーにどのように利益をもたらすかを理解しましょう。 非同期読み取りにより、長時間またはブロッキング操作がメインスレッドの実行をブロックせずに進行できるようになります。 C#では、非同期機能をサポートするメソッドと一緒にasyncおよびawaitキーワードを利用できます。 これは追加のスレッドを作成するのではなく、現在のスレッドを解放します。 タスクの開始と管理にはメインスレッドが必要ですが、単一のタスクに専念する必要はありません。 非同期メソッドが関与を求めるときにメインスレッドが呼び出され、それ以外のタスクを処理するために解放されます—ファイルの読み書きやネットワークリクエストなどのI/Oバウンドタスクのように。

バーコード読み取りを一例として考えてみましょう。 このシナリオでは、関与するステップは次のとおりです:

  • ファイルの読み取り
  • 読み取りオプションの適用
  • バーコードのデコード

"ファイルの読み取り"段階ではメインタスクをリリースできます。

ReadAsyncおよびReadPdfAsyncメソッドを使用して、画像およびPDFドキュメントのバーコードを非同期に読み取ります。

:path=/static-assets/barcode/content-code-examples/how-to/async-multithread-async.cs
using IronBarCode;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

List<string> imagePaths = new List<string>() { "image1.png", "image2.png" };

// Barcode reading options
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = true
};

// Read barcode using Async
BarcodeResults asyncResult = await BarcodeReader.ReadAsync(imagePaths, options);

// Print the results to console
foreach (var result in asyncResult)
{
    Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks

Private imagePaths As New List(Of String)() From {"image1.png", "image2.png"}

' Barcode reading options
Private options As New BarcodeReaderOptions() With {.ExpectMultipleBarcodes = True}

' Read barcode using Async
Private asyncResult As BarcodeResults = await BarcodeReader.ReadAsync(imagePaths, options)

' Print the results to console
For Each result In asyncResult
	Console.WriteLine(result.ToString())
Next result
$vbLabelText   $csharpLabel

上記のコードスニペットから、IronBarcodeによって非同期に読み取られる画像パスのリストをインスタンス化しました。 BarcodeReaderクラスのReadAsyncメソッドを使用して画像を読み取ることができます。 その後、ユーザーは画像パスおよび読み取りオプションを指定できます。

非同期操作のこの方法は、PDFドキュメント内のバーコードを読み取るためにも利用可能であり、これは同じクラスの一部であるReadPdfAsyncとして知られています。

マルチスレッドでバーコードを読む例

非同期操作とは異なり、マルチスレッドは単一のプロセスを複数のスレッドで同時に実行できるようにします。 これは、単一スレッドでプロセスを順次実行するのではなく、マルチスレッディングが複数のスレッドにタスクを分散し、同時実行を可能にすることを意味します。 ただし、マルチスレッディングが機能するためには、マシンに複数のCPUコアが必要で、これらのコアはスレッドを独立して実行するために使用されます。 非同期操作と同様に、マルチスレッディングはアプリケーションのパフォーマンスと応答性を向上させることを目指します。

IronBarcodeでは、Multithreadedプロパティを設定し、BarcodeReaderOptionsでの同時実行のために最大コア数を指定することによってマルチスレッディングを有効にします。 MaxParallelThreadsのデフォルト値は4で、利用可能なCPUコアに基づいて調整できます。

ご注意使用可能なコアを見つけるには、タスク マネージャー -> パフォーマンス タブ -> CPU をクリックします。 "コア"フィールドには数が表示されます。

:path=/static-assets/barcode/content-code-examples/how-to/async-multithread-multithread.cs
using IronBarCode;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

List<string> imagePaths = new List<string>(){"test1.jpg", "test2.png"};

// Barcode reading options
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    Multithreaded = true,
    MaxParallelThreads = 4,
    ExpectMultipleBarcodes = true
};

// Read barcode with multithreaded enabled
BarcodeResults results = BarcodeReader.Read(imagePaths, options);

// Print the results to console
foreach (var result in results)
{
    Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks

Private imagePaths As New List(Of String)() From {"test1.jpg", "test2.png"}

' Barcode reading options
Private options As New BarcodeReaderOptions() With {
	.Multithreaded = True,
	.MaxParallelThreads = 4,
	.ExpectMultipleBarcodes = True
}

' Read barcode with multithreaded enabled
Private results As BarcodeResults = BarcodeReader.Read(imagePaths, options)

' Print the results to console
For Each result In results
	Console.WriteLine(result.ToString())
Next result
$vbLabelText   $csharpLabel

パフォーマンス比較

サンプル画像

サンプル画像

画像1
画像2
通常の読み取り 非同期読み取り マルチスレッド読み取り(4コア)
01.75秒 01.67秒 01.17秒

しかし、これらの2つの操作は異なる目的とアプローチを持っています。 したがって、ユーザーは自分が構築しているアプリケーションに最適なアプローチを判断する必要があります。 最後に、1つのドキュメントに複数のバーコードがある場合があるかもしれません。

詳細については、複数のバーコードを読むガイドをご覧ください。 詳細については、 "複数のバーコードの読み取り"ガイドをご覧ください。

よくある質問

C#で非同期バーコード読み取りを実装するにはどうすればよいですか?

C#で非同期バーコード読み取りを実装するには、IronBarcodeのReadAsyncReadPdfAsyncメソッドを使用します。これらのメソッドにより、メインスレッドをブロックせずに画像やPDFからバーコードを読み取ることができます。

バーコード処理用にマルチスレッドを有効にするためのステップは何ですか?

バーコード処理用にマルチスレッドを有効にするには、Multithreadedプロパティをtrueに設定し、MaxParallelThreadsプロパティを設定して、複数のCPUコアを効率的に利用します。IronBarcodeはこれらの設定をサポートしています。

バーコード読み取りで非同期操作を使用する利点は何ですか?

バーコード読み取りで非同期操作を使用することにより、メインスレッドをブロックせずにタスクを進行させ、特にI/Oバウンドの操作でアプリケーションの応答性を向上させることができます。IronBarcodeの非同期メソッドは、asyncおよびawaitキーワードを使用してこれを容易にします。

マルチスレッドがバーコード読み取りのパフォーマンスをどのように向上させますか?

マルチスレッドは、複数のCPUコア間でタスクの同時実行を可能にすることで、バーコード読み取りのパフォーマンスを向上させ、処理を高速化します。これは、特にCPUバウンドのタスクに有益です。

マルチスレッドのバーコード読み取りに使用されるスレッドのデフォルト数は何ですか?

IronBarcodeでは、マルチスレッドのバーコード読み取りに使用されるスレッドのデフォルト数は4で、これをMaxParallelThreadsプロパティを介してCPUの能力に基づいて調整できます。

C#で非同期およびマルチスレッドのバーコード読み取り用のライブラリはどこでダウンロードできますか?

C#で非同期およびマルチスレッドのバーコード読み取り用のライブラリは、.NETパッケージマネージャーNuGet(https://nuget.org/packages/IronPdf/)からダウンロードできます。このライブラリは、非同期およびマルチスレッド操作の機能を提供します。

バーコード読み取りのためにすべてのシステムでマルチスレッドを使用できますか?

マルチスレッドは、スレッドの同時処理を可能にする複数のCPUコアを持つシステムで使用できます。IronBarcodeのマルチスレッド機能はそのようなシステムを活用します。

通常、非同期、マルチスレッドのバーコード読み取りのパフォーマンスをどのように比較できますか?

パフォーマンス比較は、通常の読み取りが最も遅く、非同期読み取りが速く、マルチスレッド読み取りが最速であることを示します。これは、複数のCPUコアを活用するためです。IronBarcodeは、これらの読み取りオプションを提供してパフォーマンスを向上させます。

ドキュメント内の複数のバーコードを読み取るための最良の方法は何ですか?

IronBarcodeは、ドキュメント内の複数のバーコードを読み取るための包括的なサポートを提供します。詳細なガイダンスについては、ドキュメントをご覧ください。/csharp/barcode/how-to/read-multiple-barcodes/。

Hairil Hasyimi Bin Omar
ソフトウェアエンジニア
すべての優れたエンジニアのように、ハイリルは熱心な学習者です。彼はC#、Python、Javaの知識を磨き、その知識を活用してIron Softwareのチームメンバーに価値を追加しています。ハイリルはマレーシアのマラ工科大学からIron Softwareのチームに参加し、化学およびプロセス工学の学士号を取得しました。
準備はできましたか?
Nuget ダウンロード 1,979,979 | Version: 2025.11 リリース