Wie man Async und Multithread in Barcode mit C# verwendet

Wie man Async und Multithread in C# mit IronBarcode verwendet

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 IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronBarcode mit dem NuGet-Paketmanager.

    PM > Install-Package BarCode

  2. Kopieren 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 });
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronBarcode in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer


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

Im Unterschied zu asynchronen Operationen ermöglicht Multithreading die Ausführung eines einzelnen Prozesses in mehreren Threads gleichzeitig. Das bedeutet, dass Multithreading Aufgaben unter mehreren Threads verteilt, wodurch eine gleichzeitige Ausführung ermöglicht wird, anstatt einen Prozess sequenziell in einem einzelnen Thread auszuführen. Allerdings muss für das Funktionieren von Multithreading eine Maschine über mehrere CPU-Kerne verfügen, da diese Kerne verwendet werden, um die Threads unabhängig auszuführen. Ähnlich wie bei asynchronen 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 -> Registerkarte Leistung -> Klicken Sie auf CPU. das Feld 'Cores' zeigt die Anzahl an

: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

Leistungsvergleich

Jetzt lesen wir die beiden Bilder unten und vergleichen die Lesezeiten von normalen, asynchronen und Multithread-Operationen.

Beispielfoto

Bild 1
Bild 2
Normal lesen Asynchrones Lesen Multithreading-Lesen (4 Kerne)
01.75 Sekunden 01.67 Sekunden 01.17 Sekunden

Aus der Vergleichstabelle ist ersichtlich, dass die Leistung erheblich steigt, sobald das asynchrone und multithreaded Lesen implementiert wird. Benutzer müssen den passenden Ansatz für ihre Anwendung wählen. Schließlich kann es Situationen geben, in denen mehrere Barcodes auf einem einzigen Dokument vorhanden sind.

Weitere Informationen finden Sie im Leitfaden zum Lesen mehrerer Barcodes. Weitere Informationen finden Sie im Leitfaden "Mehrere Barcodes lesen" .

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, um Iron Software-Teammitgliedern Mehrwert zu bieten. Hairil kam von der Universiti Teknologi MARA in Malaysia, wo er seinen Bachelor in Chemie- und Verfahrenstechnik abschloss.
Bereit anzufangen?
Nuget Downloads 1,979,979 | Version: 2025.11 gerade veröffentlicht