Wie man Async und Multithread in Barcode mit C# verwendet

How to Use Async and Multithread

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

Die Begriffe Async und Multithreading-Operationen werden oft verwechselt. Beide Methoden zielen darauf ab, die Programmleistung und Effizienz zu verbessern, indem sie die Systemressourcennutzung optimieren und die Laufzeit verkürzen. Sie unterscheiden sich jedoch in Ansatz, Mechanismen und beabsichtigten Anwendungsfällen. IronBarcode unterstützt beide Ansätze. Dieser Artikel untersucht die Unterschiede zwischen ihnen und wie man sie mit IronBarcode implementiert.

Schnellstart: Asynchrones & Multithreaded Barcode Reading 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.

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">

Minimaler Workflow (5 Schritte)

  1. Laden Sie die C#-Bibliothek für Async- und Multithread-Unterstützung herunter
  2. Verwenden Sie die Methoden ReadAsync und ReadPdfAsync für asynchrones Barcode-Lesen von Bildern und PDFs
  3. Aktivieren Sie Multithreading, indem Sie die Eigenschaft Multithreaded auf 'true' setzen
  4. Geben Sie die parallel ablaufende Thread-Anzahl über die Eigenschaft MaxParallelThreads an
  5. Überprüfen Sie den Leistungsvergleich zwischen normalem, asynchronem und multithreaded Barcode-Lesen


Beispiel für asynchrones Lesen von Barcodes

Beginnen wir damit zu verstehen, was asynchrones Lesen ist und wie es den Benutzern zugute kommt. Asynchrones Lesen ermöglicht es, dass lange oder blockierende Operationen fortgesetzt werden, ohne die Ausführung des Hauptthreads zu blockieren. In C# können Benutzer die Keywords async und await mit Methoden verwenden, die asynchrone Funktionen unterstützen. Dies erstellt keine zusätzlichen Threads, sondern gibt stattdessen den aktuellen Thread frei. Während der Hauptthread noch erforderlich ist, um Aufgaben zu starten und zu verwalten, muss er sich nicht ausschließlich einer einzigen Aufgabe widmen. Der Hauptthread wird herbeigerufen, wenn die asynchrone Methode seine Beteiligung erfordert und kann sich anderen Aufgaben widmen, wenn er nicht benötigt wird - wie I/O-gebundene Aufgaben wie Lesen/Schreiben von Dateien oder das Ausführen von Netzwerkabfragen.

Betrachten wir das Barcode-Lesen als Beispiel. In diesem Szenario wären die Schritte:

  • Die Datei lesen
  • Leseoptionen anwenden
  • Den Barcode dekodieren

Während des Schrittes "Die Datei lesen" kann die Hauptaufgabe freigegeben werden.

Verwenden Sie die Methoden ReadAsync und ReadPdfAsync, um Barcodes asynchron für Bilder und PDF-Dokumente zu lesen.

: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

In dem obigen Code-Snippet haben wir eine Liste von Bildpfaden instanziiert, die von IronBarcode asynchron gelesen werden sollen. Um die Bilder zu lesen, können Sie die Methode ReadAsync aus der BarcodeReader-Klasse verwenden. Benutzer können dann die imagePaths sowie Leseoptionen spezifizieren.

Diese Methode für asynchrone Operationen ist auch für das Lesen von Barcodes in PDF-Dokumenten verfügbar und als ReadPdfAsync bekannt, das Teil derselben Klasse ist.

Beispiel für Multithread-Barcode-Lesen

Anders als asynchrone Operationen ermöglicht Multithreading, dass ein einzelner Prozess gleichzeitig in mehreren Threads ausgeführt wird. Das bedeutet, dass anstatt einen Prozess sequentiell in einem einzigen Thread auszuführen, Multithreading Aufgaben auf mehrere Threads aufteilt und so die gleichzeitige Ausführung ermöglicht. Damit Multithreading jedoch funktioniert, muss ein Computer über mehrere CPU-Kerne verfügen, da diese Kerne verwendet werden, um die Threads unabhängig voneinander auszuführen. Ähnlich wie asynchrone Operationen zielt Multithreading darauf ab, die Leistung und Reaktionsfähigkeit von Anwendungen zu verbessern.

In IronBarcode aktivieren Sie Multithreading, indem Sie die Eigenschaft Multithreaded setzen und die maximale Anzahl der Kerne für die gleichzeitige Ausführung mit MaxParallelThreads in BarcodeReaderOptions angeben. Der Standardwert für MaxParallelThreads beträgt 4, was basierend auf den verfügbaren CPU-Kernen angepasst werden kann.

Hinweis:Um verfügbare Kerne zu finden: Task-Manager -> Leistung-Tab -> Klicken Sie auf CPU.) 'Kerne'-Feld zeigt Anzahl an.
### Leistungsvergleich

: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

Lesen wir nun die beiden unten stehenden Bilder und vergleichen die Lesedauer von normalen, asynchronen und multithreaded Operationen.

Beispielbild

![Bild 1](/static-assets/barcode/how-to/async-multithread/sample1.webp)
![Bild 2](/static-assets/barcode/how-to/async-multithread/sample2.webp)
Normales Lesen Asynchrones Lesen Multithreaded Lesen (4 Kerne)
01,75 Sekunden 01,67 Sekunden 01,17 Sekunden

Aus der Vergleichstabelle geht hervor, dass es eine signifikante Leistungssteigerung gibt, sobald asynchrones und multithreaded Lesen implementiert sind.

Diese beiden Operationen dienen jedoch unterschiedlichen Zwecken und Ansätzen. Daher müssen Benutzer bestimmen, welcher Ansatz besser für die Anwendung geeignet ist, die sie entwickeln. Schließlich kann es Situationen geben, in denen mehrere Barcodes auf einem einzigen Dokument vorhanden sind.

Für weitere Informationen besuchen Sie den Leitfaden zum Lesen mehrerer Barcodes. For more information, visit the Read Multiple Barcodes guide.

Häufig gestellte Fragen

Wie kann ich asynchrones Barcode-Lesen in C# implementieren?

Sie können asynchrones Barcode-Lesen in C# implementieren, indem Sie die Methoden ReadAsync und ReadPdfAsync von IronBarcode verwenden. Diese Methoden ermöglichen das Barcode-Lesen aus Bildern und PDFs, ohne den Hauptthread zu blockieren.

Was sind die Schritte, um Multithreading für die Barcode-Verarbeitung zu aktivieren?

Um Multithreading für die Barcode-Verarbeitung zu aktivieren, setzen Sie die Eigenschaft Multithreaded auf true und konfigurieren Sie die Eigenschaft MaxParallelThreads, um mehrere CPU-Kerne effizient zu nutzen. IronBarcode unterstützt diese Konfigurationen.

Was sind die Vorteile der Verwendung von asynchronen Operationen beim Barcode-Lesen?

Asynchrone Operationen beim Barcode-Lesen ermöglichen es Aufgaben fortzuschreiten, ohne den Hauptthread zu blockieren, was die Anwendungsreaktionsfähigkeit insbesondere bei I/O-gebundenen Operationen verbessert. Die Async-Methoden von IronBarcode erleichtern dies mithilfe der Keywords async und await.

Wie verbessert Multithreading die Leistung des Barcode-Lesens?

Multithreading verbessert die Leistung des Barcode-Lesens, indem es die gleichzeitige Ausführung von Aufgaben über mehrere CPU-Kerne ermöglicht, was die Verarbeitung beschleunigt. Dies ist besonders vorteilhaft für CPU-gebundene Aufgaben.

Wie viele Threads werden bei multithreaded Barcode-Lesen standardmäßig verwendet?

In IronBarcode beträgt die standardmäßig für multithreaded Barcode-Lesen verwendete Thread-Anzahl 4, die je nach Fähigkeit Ihrer CPU über die Eigenschaft MaxParallelThreads angepasst werden kann.

Wo kann ich die Bibliothek für async und multithreaded Barcode-Lesen in C# herunterladen?

Sie können die Bibliothek für async und multithreaded Barcode-Lesen in C# vom .NET-Paketzmanager NuGet unter https://nuget.org/packages/IronPdf/ herunterladen. Diese Bibliothek bietet Funktionen für sowohl asynchrone als auch multithreaded Operationen.

Kann Multithreading auf allen Systemen für Barcode-Lesen verwendet werden?

Multithreading kann auf Systemen mit mehreren CPU-Kernen verwendet werden, da diese Kerne die gleichzeitige Verarbeitung von Threads ermöglichen. Die Multithreading-Funktionalität von IronBarcode nutzt solche Systeme aus.

Wie kann ich die Leistung von normalem, asynchronem und multithreaded Barcode-Lesen vergleichen?

Der Leistungsvergleich zeigt, dass normale Lesevorgänge am langsamsten sind, asynchrone Lesevorgänge schneller sind und multithreaded Lesevorgänge am schnellsten sind, da sie mehrere CPU-Kerne nutzen. IronBarcode bietet diese Leseoptionen für verbesserte Leistung.

Was ist die beste Methode zum Lesen mehrerer Barcodes in einem Dokument?

IronBarcode bietet umfassende Unterstützung für das Lesen mehrerer Barcodes in einem Dokument. Für detaillierte Anleitungen lesen Sie die Dokumentation unter /csharp/barcode/how-to/read-multiple-barcodes/.

Hairil Hasyimi Bin Omar
Software Ingenieur
Wie alle großen Ingenieure ist Hairil ein leidenschaftlicher Lerner. Er verfeinert sein Wissen in C#, Python und Java und setzt dieses Wissen ein, um Teammitgliedern bei Iron Software Mehrwert zu bieten. HAiril trat dem Iron Software-Team von der Universiti Teknologi MARA in Malaysia bei, wo er mit einem Bachelor ...
Weiterlesen
Bereit anzufangen?
Nuget Downloads 1,935,276 | Version: 2025.11 gerade veröffentlicht