IRONSOFTWAREHOME

Wie man Async und Multithread in C# mit IronBarcode verwendet

Hairil Hasyimi Bin Omar
Hairil Hasyimi Bin Omar
Updated: 3. Juni 2026

Async und Multithreading in IronBarcode optimieren die Leistung beim Lesen von Barcodes auf unterschiedliche Weise - Async verhindert das Blockieren des Haupt-Threads bei E/A-Operationen, während Multithreading mehrere Barcodes gleichzeitig auf mehreren CPU-Kernen verarbeitet.

Entwickler verwechseln oft Async und Multithreading Operationen. Beide Methoden verbessern die Leistung und Effizienz von Programmen, indem sie die Nutzung von Systemressourcen optimieren und die Laufzeit verkürzen. Sie unterscheiden sich jedoch in ihrem Ansatz, ihren Mechanismen und ihren Anwendungsfällen. IronBarcode unterstützt beide Ansätze. Dieser Artikel befasst sich mit den Unterschieden und der Implementierung mit IronBarcode.

Schnellstart: Async & Multithreaded Barcode-Lese-Beispiel

Verwenden Sie dieses Einzeilenbeispiel, um sofort mit IronBarcode zu beginnen. Es zeigt, wie einfach es ist, asynchrones Lesen und Multithreading-Optionen zu kombinieren, um mehrere Barcode-Bilder parallel mit minimalem Setup zu scannen.

  1. 1Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. 2Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    var results = await IronBarCode.BarcodeReader.ReadAsync(imagePaths, new IronBarCode.BarcodeReaderOptions { Multithreaded = true, MaxParallelThreads = 4, ExpectMultipleBarcodes = true });
    C#
  3. 3Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute, IronBarcode in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
    arrow pointer

Wie lese ich Barcodes asynchron mit IronBarcode?

Asynchrones Lesen ermöglicht es, dass lange oder blockierende Operationen fortgesetzt werden, ohne die Ausführung des Hauptthreads zu blockieren. In C# verwenden Sie die Schlüsselwörter async und await mit Methoden, die asynchrone Funktionen unterstützen. Bei diesem Ansatz werden keine zusätzlichen Threads erstellt, sondern der aktuelle Thread wird freigegeben. Während der Hauptstrang Aufgaben initiiert und verwaltet, bleibt er nicht ausschließlich einer einzigen Aufgabe gewidmet. Der Haupt-Thread kehrt zurück, wenn die asynchrone Methode seine Beteiligung erfordert, so dass er sich um andere Aufgaben kümmern kann, wenn er nicht benötigt wird - besonders nützlich für E/A-gebundene Aufgaben wie das Lesen/Schreiben von Dateien oder das Stellen von Netzwerkanforderungen.

Nehmen wir das Lesen von Barcodes als Beispiel. Der Prozess beinhaltet:

  • Die Datei lesen
  • Leseoptionen anwenden
  • Den Barcode dekodieren

Während des Lesens der Datei kann die Hauptaufgabe freigegeben werden. Dies kommt Szenarien mit mehreren Bilddateien oder großen PDFs zugute, wie in unserem Tutorial zum Lesen von Barcodes gezeigt.

Verwenden Sie die Methoden ReadAsync und ReadPdfAsync, um Barcodes nacheinander für Bilder bzw. PDF-Dokumente zu lesen. Bevor Sie asynchrone Operationen implementieren, stellen Sie sicher, dass Sie IronBarcode über NuGet in Ihrem Projekt installiert haben.

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

Der obige Codeausschnitt instanziiert ein List von Bildpfaden, die asynchron von IronBarcode gelesen werden sollen. Um die Bilder zu lesen, verwenden Sie die Methode ReadAsync der Klasse BarcodeReader. Geben Sie die imagePaths und die Leseoptionen an. Erweiterte Konfigurationsoptionen finden Sie in unserem Leitfaden zu Barcode-Leser-Einstellungen.

Diese Methode für asynchrone Operationen steht auch für das Lesen von Barcodes in PDF-Dokumenten über ReadPdfAsync in derselben Klasse zur Verfügung. Spezifische Konfigurationen für das Lesen von PDF-Dateien finden Sie in unserem Einstellungshandbuch für PDF-Barcode-Leser.

Multithreaded
MaxParallelThreads

Wann sollte ich asynchrones Lesen gegenüber regulären Methoden verwenden?

Asynchrones Lesen ist in mehreren Szenarien von Vorteil:

  1. GUI-Anwendungen: Windows Forms- oder WPF-Anwendungen, die eine reaktionsfähige Benutzeroberfläche erfordern. Async verhindert das Einfrieren der Schnittstelle beim Scannen von Barcodes.

  2. Webanwendungen: ASP.NET-Anwendungen, die mehrere gleichzeitige Anfragen ohne blockierende Threads verarbeiten, insbesondere bei der Verarbeitung hochgeladener Barcode-Bilder.

  3. Stapelverarbeitung: Sequentielles Lesen mehrerer BarCode-Bilder oder PDFs, wobei andere Aufgaben während der E/A-Operationen ausgeführt werden können.

  4. Netzbetrieb: Lesen von BarCodes aus entfernten Quellen oder URLs, wie in unserem Beispiel für das asynchrone Lesen von BarCodes aus einer URL gezeigt.

Warum verbessert Async Reading die Reaktionsfähigkeit von Anwendungen?

Asynchrones Lesen verbessert die Reaktionsfähigkeit, indem der Haupt-Thread während E/A-gebundener Operationen freigegeben wird. Wenn IronBarcode eine Bilddatei von der Festplatte liest oder eine PDF-Datei verarbeitet, wartet der Thread nicht im Leerlauf. Stattdessen übernimmt sie andere Aufgaben wie die Beantwortung von Benutzereingaben oder die Bearbeitung von Anfragen. Dies ist besonders wichtig, wenn es um Folgendes geht:

  • Große Bilddateien, die viel Zeit zum Laden benötigen
  • PDFs mit mehreren Seiten, die BarCodes enthalten
  • Netzwerkbasierte Bildquellen
  • Szenarien, die Bildkorrekturfilter vor der Barcode-Erkennung erfordern

Was sind häufige Fallstricke bei der Verwendung von Async BarCode Reading?

Achten Sie bei der Implementierung von asynchronem Barcodelesen auf diese häufigen Probleme:

  1. Deadlocks: Vermeiden Sie Result oder Wait() bei asynchronen Methoden in UI-Kontexten. Verwenden Sie durchgehend await in der gesamten Aufrufkette.

  2. Ausnahmebehandlung: Wickeln Sie async-Aufrufe in try-catch-Blöcke ein, da sich Ausnahmen in async-Methoden möglicherweise nicht wie erwartet ausbreiten.

  3. Kontextwechsel: Berücksichtigen Sie die Verwendung von ConfigureAwait(false), wenn Sie nicht zum ursprünglichen Synchronisationskontext zurückkehren müssen.

  4. Leistungsmißverständnisse: Async beschleunigt keine einzelnen Operationen; sie verbessert die Reaktionsfähigkeit von Anwendungen. Um die Geschwindigkeit bei mehreren Bildern zu erhöhen, sollten Sie Multithreading in Betracht ziehen.

Für die Fehlerbehebung bei asynchronen Problemen lesen Sie bitte unseren Leitfaden zur Fehlerbehebung bei der Barcode-Erkennung.

Wie aktiviere ich das Lesen von BarCodes im Multithreading-Verfahren?

Im Gegensatz zu asynchronen Operationen wird beim Multithreading ein einzelner Prozess über mehrere Threads gleichzeitig ausgeführt. Anstelle der sequenziellen Ausführung in einem einzigen Thread werden beim Multithreading Aufgaben auf mehrere Threads aufgeteilt, um sie gleichzeitig auszuführen. Multithreading erfordert mehrere CPU-Kerne, da diese Kerne unabhängig voneinander Threads ausführen. Wie asynchrone Operationen erhöht auch Multithreading die Leistung und Reaktionsfähigkeit von Anwendungen.

In IronBarcode aktivieren Sie Multithreading, indem Sie die Eigenschaft Multithreaded festlegen und die maximale Anzahl der Kerne für gleichzeitige Ausführung mithilfe von MaxParallelThreads in BarcodeReaderOptions angeben. Der Standardwert von MaxParallelThreads ist 4, anpassbar basierend auf den verfügbaren CPU-Kernen. Für optimale Leistungskonfigurationen siehe unseren Lesegeschwindigkeits-Optionen-Leitfaden.

Hinweis:: Um verfügbare Kerne zu finden: Task-Manager -> Registerkarte Leistung -> Klicken Sie auf CPU. 'Kerne'-Feld zeigt die Anzahl an.
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());
}

Wie viel Leistungsverbesserung kann ich erwarten?

Lesen wir zwei Beispielbilder und vergleichen wir die Lesezeiten bei normalen, asynchronen und Multithreading-Operationen.

Beispielfoto

UPC-A Barcode Beispiel mit der Nummer 0 123456 789012 zur Demonstration des Lesens von Multithread-Barcodes
UPC-A-Barcode-Beispiel mit der Nummer 771234567003 zur Demonstration des Lesens von Multithread-Barcodes
Normal lesenAsynchrones LesenMultithreading-Lesen (4 Kerne)
01.75 Sekunden01.67 Sekunden01.17 Sekunden

Der Vergleich zeigt signifikante Leistungssteigerungen beim asynchronen und multithreadingbasierten Lesen. Multithreading bietet eine Verbesserung von ca. 33 % gegenüber dem normalen Lesen, während async eine Verbesserung von ca. 5 % bietet. Diese Vorgänge dienen jedoch unterschiedlichen Zwecken und Ansätzen. Wählen Sie den Ansatz, der am besten zu den Anforderungen Ihrer Anwendung passt.

Die Leistungsverbesserungen sind abhängig von:

  • Anzahl der bearbeiteten Bilder
  • Bildkomplexität und BarCode-Qualität
  • Verfügbare CPU-Kerne
  • Andere Systemressourcen

Für Situationen mit mehreren BarCodes auf einem einzigen Dokument, besuchen Sie den Lesen mehrerer BarCodes Leitfaden.

Wann sollte ich Multithreading den asynchronen Operationen vorziehen?

Wählen Sie Multithreading, wenn:

  1. CPU-intensive Operationen: Die Verarbeitung erfordert intensive Berechnungen wie komplexe Bildfilter oder hochauflösende Bilder
  2. Batch-Verarbeitung: Mehrere unabhängige Bilder erfordern gleichzeitige Verarbeitung
  3. Mehrkernsyste: Die Bereitstellungsumgebung verfügt über mehrere verfügbare CPU-Kerne
  4. Leistungskritisch: Rohe Verarbeitungsgeschwindigkeit übertrifft Ressourceneffizienz

Wählen Sie asynchrone Operationen, wenn:

  1. I/O-intensive Operationen: Die meiste Zeit wird mit dem Lesen von Dateien oder Warten auf Netzwerkantworten verbracht
  2. UI-Anwendungen: Aufrechterhaltung reaktionsfähiger Benutzeroberflächen ist entscheidend
  3. Begrenzte Ressourcen: Ausführung auf Systemen mit begrenzten CPU-Kernen
  4. Webanwendungen: Effiziente Bearbeitung mehrerer gleichzeitiger Anfragen

Wie ermittle ich den optimalen MaxParallelThreads-Wert?

Der optimale Wert für MaxParallelThreads hängt von mehreren Faktoren ab:

  1. Verfügbare CPU-Kerne: Beginnen Sie mit Environment.ProcessorCount als Ausgangspunkt
  2. Arbeitslasttyp: Für reines Barcode-Lesen verwenden Sie 75% der verfügbaren Kerne
  3. Systemressourcen: Lassen Sie Spielraum für das Betriebssystem und andere Prozesse
  4. Testergebnisse: Benchmarken Sie mit Ihrer spezifischen Arbeitslast

Hier ist ein praktischer Ansatz, um den optimalen Wert zu finden:

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

In Produktionsumgebungen sollten Sie die Leistung überwachen und auf der Grundlage der tatsächlichen Nutzungsmuster anpassen. Erwägen Sie die Implementierung einer Lizenzschlüsselkonfiguration für Unternehmenseinsätze, die maximale Leistung erfordern.

Die vollständigen API-Funktionen finden Sie in der IronBarcode API-Referenz.

Häufig gestellte Fragen

Was ist der Unterschied zwischen asynchronem und Multithreading beim Lesen von Barcodes?

Mit IronBarcode verhindern asynchrone Operationen das Blockieren des Hauptthreads bei E/A-Aufgaben wie dem Lesen von Dateien, während Multithreading mehrere Barcodes gleichzeitig auf mehreren CPU-Kernen verarbeitet. Async verwendet die async/await-Schlüsselwörter, um den Haupt-Thread bei langen Operationen freizugeben, während Multithreading mehrere Threads zur parallelen Verarbeitung von Barcodes erstellt.

Wie implementiere ich asynchrones Barcode-Lesen in C#?

IronBarcode bietet die Methoden ReadAsync() und ReadPdfAsync() für asynchrones Lesen von Barcodes. Verwenden Sie diese Methoden einfach mit den async/await-Schlüsselwörtern in C#, um Barcodes aus Bildern und PDFs zu lesen, ohne den Hauptthread zu blockieren. Dies ist besonders vorteilhaft bei der Verarbeitung mehrerer Bilddateien oder großer PDF-Dokumente.

Wie kann ich Multithreading für die Barcode-Verarbeitung aktivieren?

Um Multithreading in IronBarcode zu aktivieren, setzen Sie die Eigenschaft Multithreaded in den BarcodeReaderOptions auf 'true'. Sie können auch die Anzahl der parallelen Threads mit der Eigenschaft MaxParallelThreads steuern, so dass Sie die Leistung auf der Grundlage der Fähigkeiten Ihres Systems optimieren können.

Kann ich Asynchronität und Multithreading für eine optimale Leistung kombinieren?

Ja, IronBarcode ermöglicht es Ihnen, beide Ansätze zu kombinieren. Sie können ReadAsync() mit aktiviertem Multithreading verwenden, indem Sie Multithreaded = true setzen und MaxParallelThreads in den BarcodeReaderOptions konfigurieren. Diese Kombination bietet sowohl nicht-blockierende E/A-Operationen als auch parallele Verarbeitung über mehrere CPU-Kerne.

Wann sollte ich async vs. multithreading für das Lesen von Barcodes verwenden?

Verwenden Sie asynchrone Operationen in IronBarcode, wenn Sie mit I/O-gebundenen Aufgaben wie dem Lesen großer Dateien oder Netzwerkanfragen zu tun haben, da dies ein Einfrieren der Benutzeroberfläche verhindert. Verwenden Sie Multithreading, wenn Sie mehrere Barcodes gleichzeitig verarbeiten müssen und CPU-Ressourcen zur Verfügung haben. Die besten Ergebnisse erzielen Sie, wenn Sie beide Ansätze kombinieren, wenn Sie mehrere große Barcode-Bilder oder PDFs verarbeiten.

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.

Bereit anzufangen?

Nuget Downloads 2,422,100Version:2026.9gerade veröffentlicht

Holen Sie sich Ihre KOSTENLOSE

30-Tage-Testlizenz sofort.

bullet_checkedKeine Kreditkarte oder Kontoerstellung erforderlich
bullet_testTesten Sie in der Produktion
ohne Wasserzeichen
bullet_calendar30 Tage voll
funktionsfähiges Produkt
bullet_support24/5 technischer
Support während der Testphase
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.
C# NuGet-Bibliothek für PDF
Installation mit NuGet

Version: 2026.9

PM > Install-Package BarCode
nuget.org/packages/BarCode/
  1. Rechtsklick auf Referenzen, NuGet-Pakete verwalten
  2. Wählen Sie Durchsuchen und suchen Sie "IronBarcode"
  3. Paket auswählen und installieren
C# PDF DLL
Download DLL

Version: 2026.9

  1. Laden Sie IronBarCode herunter und entpacken Sie es an einem Ort wie ~/Libs in Ihrem Lösungsverzeichnis
  2. Klicken Sie im Visual Studio Solution Explorer mit der rechten Maustaste auf Verweise. Wählen Sie Durchsuchen und dann "IronBarcode.dll"

Lizenzen ab $999

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.