IRONSOFTWAREHOME

C#で非同期とマルチスレッドを使う方法 with IronBarcode

Hairil Hasyimi Bin Omar
Hairil Hasyimi Bin Omar
Updated: 2026年6月3日

IronBarcodeの非同期処理とマルチスレッド処理では、バーコード読み取り性能の最適化が異なります。非同期処理ではI/O処理中にメインスレッドがブロックされるのを防ぎ、マルチスレッド処理ではCPUコア間で複数のバーコードを同時に処理します。

開発者はしばしばMultithreadingの操作を混同します。 どちらの手法も、システムリソースの利用を最適化し、実行時間を短縮することで、プログラムのパフォーマンスと効率を高めます。しかし、アプローチ、メカニズム、使用例が異なります。 IronBarcodeは両方のアプローチをサポートしています。 この記事では、IronBarcodeを使用したそれぞれの違いや実装について説明します。

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

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

  1. 1Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

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

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

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

IronBarcodeで非同期にBarCodeを読み取るには?

非同期読み取りにより、長時間またはブロッキング操作がメインスレッドの実行をブロックせずに進行できるようになります。 C#では、非同期機能をサポートするメソッドと一緒にawaitキーワードを使用します。 このアプローチは、追加のスレッドを作成するのではなく、現在のスレッドを解放します。 メインスレッドはタスクを開始し管理しますが、1つのタスクだけに専念するわけではありません。 メインスレッドは、非同期メソッドに関与する必要があるときに戻り、不要なときに他のタスクを処理するために解放されます-ファイルの読み取り/書き込みやネットワーク要求のようなI/Oバウンドタスクに特に便利です。

バーコードの読み取りを例に考えてみましょう。 プロセスには以下が含まれます:

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

ファイル読み取り中に、メインタスクが解放されることがあります。 これは、バーコードを読むチュートリアルで示したように、複数の画像ファイルや大きなPDFを使用するシナリオに役立ちます。

バーコードを非同期で読み取るためには、画像とPDFドキュメント用にそれぞれReadPdfAsyncメソッドを使用します。 非同期処理を実装する前に、プロジェクトにNuGet経由でIronBarcodeをインストールしていることを確認してください。

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());
}

上記のコードスニペットは、IronBarcodeによって非同期で読み取られる画像パスのListをインスタンス化します。 画像を読み取るためには、ReadAsyncメソッドを使用します。 imagePathsと読み取りオプションを指定します。 高度な設定オプションについては、BarCodeリーダー設定のガイドを参照してください。

この非同期操作メソッドは、同じクラス内のReadPdfAsyncを介してPDFドキュメントでバーコードを読み取ることもできます。 特定のPDF読み取り設定については、PDFバーコードリーダー設定ガイドを参照してください。

Multithreaded
MaxParallelThreads

通常のメソッドよりも非同期読み取りを使用するのはいつですか?

非同期読み上げは、いくつかのシナリオで優れています:

1.GUIアプリケーション:UI応答性を必要とするWindowsフォームまたはWPFアプリケーション。 Asyncは、バーコードスキャン中のインターフェイスのフリーズを防ぎます。

2.Webアプリケーション:ASP.NETアプリケーションは、特にアップロードされたバーコード画像を処理するときに、スレッドをブロックすることなく複数の同時リクエストを処理します。

3.バッチ処理: 複数の BarCode イメージや PDF を連続して読み取り、I/O 操作中に他のタスクを実行できるようにします。

4.ネットワーク操作read barcodes from URL asynchronously example で示したように、リモート ソースまたは URL から BarCode を読み取ります。

なぜ非同期読み取りはアプリケーションの応答性を向上させるのですか?

非同期読み取りは、I/Oバウンド操作中にメインスレッドを解放することによって応答性を向上させます。 IronBarcodeがディスクからイメージファイルを読み込んだり、PDFを処理するとき、スレッドはアイドル待機しません。 その代わり、ユーザー入力への応答やリクエストの処理など、その他のタスクを処理します。 これは、特に次のような場合に顕著です:

  • 読み込みに時間がかかる大きな画像ファイル
  • バーコードを含む複数ページのPDF
  • ネットワークベースの画像ソース
  • バーコード検出の前に画像補正フィルタを必要とするシナリオ

非同期バーコード読み取りを使用するときの一般的な落とし穴は何ですか?

非同期の BarCode 読み取りを実装する場合は、以下の一般的な問題に注意してください:

  1. デッドロック: UIコンテキストでの非同期メソッドにはWait()を避けます。 常に呼び出しチェーン全体でawaitを使用してください。

2.例外処理:非同期メソッド内の例外は期待どおりに伝播しない可能性があるため、try-catch ブロックで非同期呼び出しをラップしてください。

  1. コンテキストスイッチング: 元の同期コンテキストに戻る必要がない場合にはConfigureAwait(false)の使用を検討します。

4.パフォーマンスの誤解:非同期は個々の操作を高速化しない; アプリケーションの応答性が向上します。 複数の画像によるスピードアップのために、マルチスレッドを検討してください。

非同期関連の問題のトラブルシューティングについては、BarCode認識トラブルシューティングガイドを参照してください。

マルチスレッド バーコード読み取りを有効にするにはどうすればよいですか?

非同期操作とは異なり、マルチスレッドは、複数のスレッドにまたがって単一のプロセスを同時に実行します。 マルチスレッドは、単一のスレッドで逐次実行する代わりに、タスクを複数のスレッドに分割して同時実行します。 マルチスレッドには複数のCPUコアが必要で、これらのコアは独立してスレッドを実行します。 非同期操作と同様に、マルチスレッドはアプリケーションのパフォーマンスと応答性を向上させます。

IronBarcodeでは、MaxParallelThreadsを使用して並行実行のための最大コア数を指定することでマルチスレッドを有効にします。 デフォルトのMaxParallelThreads値は4で、利用可能なCPUコアに基づいて調整可能です。 最適なパフォーマンス設定については、読書速度オプションガイドを参照してください。

ご注意: 利用可能なコアを見つけるには: タスクマネージャー -> パフォーマンスタブ -> CPUをクリック。 ### パフォーマンス比較
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());
}

どの程度のパフォーマンス向上が期待できますか?

2つのサンプル画像を読み取り、通常操作、非同期操作、マルチスレッド操作の読み取り時間を比較してみましょう。

サンプル画像

マルチスレッドバーコード読み取りデモ用の番号 0 123456 789012 を示す UPC-A バーコードの例
マルチスレッドバーコード読み取りデモ用の番号771234567003を示すUPC-Aバーコードサンプル
通常の読み取り非同期読み取りマルチスレッド読み取り(4コア)
01.75秒01.67秒01.17秒

この比較では、非同期読み取りとマルチスレッド読み取りによってパフォーマンスが大幅に向上することが示されています。 マルチスレッディングは、通常の読み取りと比較して約33%の改善をもたらし、非同期は約5%の改善をもたらします。 しかし、これらの業務は、目的やアプローチが異なります。 アプリケーションの要件に最も適したアプローチを選択してください。

パフォーマンスの向上は、以下によって異なります:

  • 処理画像数
  • 画像の複雑さとバーコードの品質
  • 使用可能なCPUコア
  • その他のシステムリソース

1つのドキュメントに複数の BarCode がある場合は、Read Multiple Barcodes ガイドをご覧ください。

いつ非同期操作よりもマルチスレッドを選択すべきですか?

マルチスレッドを選択する場合

  1. CPU負荷の高い操作: 複雑な画像フィルターや高解像度画像のような重い計算を伴うプロセス
  2. バッチ処理: 複数の独立した画像を同時に処理する必要がある
  3. マルチコアシステム: 配備環境に複数のCPUコアが利用可能
  4. パフォーマンスが重要: リソース効率よりも処理速度が重要

非同期処理を選択するのは、次のような場合です:

  1. I/O負荷の高い操作: 主にファイルを読み込むか、ネットワーク応答を待つ時間が多い
  2. UIアプリケーション: ユーザーインターフェースの応答性を保つことが重要
  3. リソースが限られている: 限られたCPUコアで動作するシステムで実行 4.Webアプリケーション: 複数の同時リクエストを効率的に処理する

最適な MaxParallelThreads 値はどのように決定しますか?

最適なMaxParallelThreads値は、いくつかの要因に依存します:

  1. 利用可能なCPUコア: 基準としてEnvironment.ProcessorCountから始めます
  2. ワークロードタイプ: 単純なバーコード読み取りのために、使用可能なコアの75%を使用
  3. システムリソース: OSや他のプロセスのための予備を残す
  4. テスト結果: 特定のワークロードでベンチマークする

最適な値を見つけるための実践的なアプローチをご紹介します:

int optimalThreads = Math.Max(1, Environment.ProcessorCount - 1);

本番環境では、パフォーマンスを監視し、実際の使用パターンに基づいて調整します。 最大限のパフォーマンスを必要とするエンタープライズ展開には、ライセンス キー構成の実装を検討してください。

完全なAPI機能については、IronBarcode API Referenceを参照してください。

よくある質問

BarCode を読み取る際の非同期とマルチスレッドの違いは何ですか?

IronBarcodeでは、非同期処理によりファイル読み取りなどのI/Oタスク中にメインスレッドがブロックされるのを防ぎ、マルチスレッドによりCPUコア間で複数のバーコードを同時に処理します。asyncはasync/awaitキーワードを使用して長い操作中にメインスレッドを解放し、マルチスレッドは複数のスレッドを作成して並列にバーコード処理を行います。

C#で非同期バーコード読み取りを実装するには?

IronBarcodeは非同期バーコード読み取り用にReadAsync()とReadPdfAsync()メソッドを提供しています。C#のasync/awaitキーワードでこれらのメソッドを使用するだけで、メインスレッドをブロックすることなく画像やPDFからバーコードを読み取ることができます。これは、複数の画像ファイルや大きなPDF文書を処理する場合に特に有益です。

バーコード処理でマルチスレッドを有効にするにはどうすればよいですか?

IronBarcodeでマルチスレッドを有効にするには、BarcodeReaderOptionsでMultithreadedプロパティを'true'に設定します。また、MaxParallelThreadsプロパティを使用して並列スレッド数を制御することができますので、システムの能力に応じてパフォーマンスを最適化することができます。

パフォーマンスを最適化するために、非同期処理とマルチスレッド処理を組み合わせることはできますか?

はい、IronBarcodeでは両方のアプローチを組み合わせることができます。Multithreaded = trueを設定し、BarcodeReaderOptionsでMaxParallelThreadsを設定することで、マルチスレッドを有効にしてReadAsync()を使用することができます。この組み合わせは、ノンブロッキング I/O 操作と複数の CPU コアにわたる並列処理の両方を提供します。

BarCode の読み取りには、いつ非同期とマルチスレッドを使い分ける必要がありますか?

IronBarcodeで大きなファイルの読み込みやネットワークリクエストのようなI/Oバウンドタスクを扱うときは、UIのフリーズを防ぐために非同期オペレーションを使用してください。複数のBarCodeを同時に処理する必要があり、CPUリソースに余裕がある場合はマルチスレッドを使用します。最良の結果を得るには、複数の大きなバーコード画像やPDFを処理するときに両方のアプローチを組み合わせてください。

What factors affect the optimal 'MaxParallelThreads' setting in IronBarcode?

The optimal 'MaxParallelThreads' value is influenced by available CPU cores, workload type, overall system resources, and testing results. A practical starting point is to use one less than the total available CPU cores.

How does IronBarcode's async functionality improve application responsiveness?

Async functionality in IronBarcode increases application responsiveness by freeing the main thread during long I/O-bound barcode reading tasks, allowing the application to handle other processes concurrently, such as user interface updates.

What are the advantages of using multithreading in barcode reading?

Multithreading allows simultaneous processing of multiple images, which enhances performance in CPU-bound operations such as processing complex image filters or high-resolution images. This is beneficial in environments with multiple CPU cores.

How can I implement license key configuration for optimal performance in IronBarcode?

For enterprise deployments requiring maximum performance, consider implementing license key configuration. This can be done by following IronBarcode's documentation on license key settings to fully unlock features and optimize resource utilization.

What are the key differences between async and multithreading in IronBarcode?

Async in IronBarcode prevents blocking the main thread during I/O operations, ideal for file and network tasks, whereas multithreading divides tasks among threads for concurrent execution across CPU cores, improving performance in CPU-bound operations.

準備はできましたか?

Nuget Downloads 2,422,100バージョン:2026.9リリースされたばかり

無料をゲット

30日間の試用キーをすぐに取得。

bullet_checkedクレジットカードやアカウントの作成は不要です。
bullet_test製品版でのテスト
透かしなし
bullet_calendar30日間
完全機能の製品
bullet_support試用期間中の
24/5テクニカルサポート
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package BarCode
nuget.org/packages/BarCode/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. 「参照」を選択して「IronBarCode」を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

  1. IronBarcodeをダウンロードして、ソリューションディレクトリ内の~/Libsなどの場所に解凍してください
  2. Visual Studioのソリューションエクスプローラーで、Referencesを右クリックします。 "IronBarcode.dll"を選択します

ライセンス料金は$999から

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。