Comment utiliser Async et Multithread dans les codes-barres en utilisant C#

Comment utiliser Async et Multithread en C# ; avec IronBarcode

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

Async et multithreading dans IronBarcode optimisent différemment les performances de lecture de codes-barres - async empêche le blocage du thread principal pendant les opérations d'E/S tandis que multithreading traite plusieurs codes-barres simultanément à travers les cœurs du CPU.

Les développeurs confondent souvent les opérations Async et Multithreading. Les deux méthodes améliorent les performances et l'efficacité des programmes en optimisant l'utilisation des ressources du système et en réduisant la durée d'exécution. Cependant, elles diffèrent en termes d'approche, de mécanismes et de cas d'utilisation. IronBarcode prend en charge les deux approches. Cet article explore leurs différences et leur mise en œuvre à l'aide d'IronBarcode.

Démarrage rapide : Exemple de lecture de code-barres asynchrone et multithread

Utilisez cet exemple en une ligne pour démarrer instantanément avec IronBarcode. Il montre à quel point il est facile de combiner les options de lecture asynchrone et multithread pour scanner plusieurs images de codes-barres en parallèle avec un minimum de configuration.

  1. Installez IronBarcode avec le Gestionnaire de Packages NuGet

    PM > Install-Package BarCode
  2. Copiez et exécutez cet extrait de code.

    var results = await IronBarCode.BarcodeReader.ReadAsync(imagePaths, new IronBarCode.BarcodeReaderOptions { Multithreaded = true, MaxParallelThreads = 4, ExpectMultipleBarcodes = true });
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronBarcode dans votre projet dès aujourd'hui avec un essai gratuit

    arrow pointer


Comment lire des BarCodes de manière asynchrone avec IronBarcode?

La lecture asynchrone permet aux opérations longues ou bloquantes de se poursuivre sans bloquer l'exécution du thread principal. En C#, utilisez les mots-clés async et await avec les méthodes prenant en charge les fonctionnalités asynchrones. Cette approche ne crée pas de fils de discussion supplémentaires, mais libère le fil de discussion actuel. Bien que le fil d'exécution principal initie et gère des tâches, il ne reste pas exclusivement consacré à une seule tâche. Le thread principal revient lorsque la méthode asynchrone requiert son intervention, ce qui lui permet de se consacrer à d'autres tâches lorsqu'il n'en a pas besoin, ce qui est particulièrement utile pour les tâches liées aux E/S, telles que la lecture/écriture de fichiers ou les requêtes réseau.

Prenons l'exemple de la lecture de codes-barres. Le processus implique :

  • Lecture du fichier
  • Application des options de lecture
  • Décodage du code-barres

Pendant la lecture du fichier, la tâche principale peut être libérée. Cela profite aux scénarios comportant plusieurs fichiers d'images ou des PDF volumineux, comme le démontre notre tutoriel sur la lecture des codes-barres.

Utilisez les méthodes ReadAsync et ReadPdfAsync pour lire les Barcodes de manière asynchrone respectivement pour les images et les documents PDF. Avant de mettre en œuvre des opérations asynchrones, assurez-vous d'avoir installé IronBarcode via NuGet dans votre projet.

: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

L'extrait de code ci-dessus instancie un List de chemins d'accès aux images à lire de manière asynchrone par IronBarcode. Pour lire les images, utilisez la méthode ReadAsync de la classe BarcodeReader. Spécifiez les options imagePaths et de lecture. Pour les options de configuration avancées, consultez notre guide sur les paramètres du lecteur de codes-barres.

Cette méthode d'opération asynchrone est également disponible pour la lecture de BarCodes dans des documents PDF via ReadPdfAsync dans la même classe. Pour les configurations de lecture PDF spécifiques, consultez notre Guide des paramètres du lecteur de codes-barres PDF.

Multithreaded
MaxParallelThreads

Quand devrais-je utiliser la lecture asynchrone plutôt que les méthodes normales?

La lecture asynchrone excelle dans plusieurs scénarios :

  1. Applications d'interface utilisateur : Applications Windows Forms ou WPF nécessitant une réactivité de l'interface utilisateur. Async permet d'éviter le gel de l'interface lors de la lecture des codes-barres.

  2. Applications web : Applications ASP.NET gérant plusieurs requêtes simultanées sans bloquer les threads, notamment lors du traitement des images de codes-barres téléchargées.

  3. Traitement par lots : lecture séquentielle de plusieurs images de codes-barres ou de PDF, permettant à d'autres tâches de s'exécuter pendant les opérations d'E/S.

  4. Opérations réseau : Lecture de codes-barres à partir de sources ou d'URL distantes, comme le montre notre exemple lire des codes-barres à partir d'une URL de manière asynchrone.

Pourquoi la lecture asynchrone améliore-t-elle la réactivité des applications ?

La lecture asynchrone améliore la réactivité en libérant le thread principal pendant les opérations liées aux entrées/sorties. Lorsqu'IronBarcode lit un fichier image sur le disque ou traite un PDF, le fil d'exécution n'attend pas au ralenti. La traduction doit rester professionnelle et préserver l'exactitude technique tout en expliquant les caractéristiques et les avantages de ces outils de développement. Cela est particulièrement important lorsqu'il s'agit de :

  • Fichiers d'images volumineux nécessitant un temps de chargement important
  • PDF avec plusieurs pages contenant des codes-barres
  • Sources d'images en réseau
  • Scénarios nécessitant des filtres de correction d'image avant la détection des codes-barres

Quels sont les pièges courants lors de l'utilisation de la lecture asynchrone de codes-barres ?

Lors de la mise en œuvre de la lecture asynchrone de codes-barres, faites attention à ces problèmes courants :

  1. Blocages : Évitez Result ou Wait() sur les méthodes asynchrones dans les contextes d'interface utilisateur. Utilisez toujours await tout au long de la chaîne d'appel.

  2. Gestion des exceptions : Enveloppez les appels asynchrones dans des blocs try-catch, car les exceptions dans les méthodes asynchrones peuvent ne pas se propager comme prévu.

  3. Changement de contexte : envisagez l'utilisation de ConfigureAwait(false) lorsque vous n'avez pas besoin de revenir au contexte de synchronisation d'origine.

  4. Fausses idées sur les performances : L'asynchronisme n'accélère pas les opérations individuelles ; il améliore la réactivité des applications. Pour améliorer la vitesse avec plusieurs images, envisagez le multithreading.

Pour le dépannage des problèmes liés à async, consultez notre guide de dépannage de la reconnaissance des codes-barres.

Comment activer la lecture multithread des BarCodes?

Contrairement aux opérations asynchrones, le multithreading exécute un processus unique sur plusieurs threads simultanément. Au lieu d'une exécution séquentielle dans un seul thread, le multithreading répartit les tâches entre plusieurs threads pour une exécution simultanée. Le multithreading nécessite plusieurs cœurs d'unité centrale, car ces cœurs exécutent indépendamment les threads. Tout comme les opérations asynchrones, le multithreading améliore les performances et la réactivité des applications.

Dans IronBarcode, activez le multithreading en définissant la propriété Multithreaded et en spécifiant le nombre maximal de cœurs pour l'exécution simultanée à l'aide de MaxParallelThreads dans BarcodeReaderOptions. La valeur par défaut de MaxParallelThreads est 4, ajustable en fonction des cœurs de processeur disponibles. Pour des configurations de performances optimales, consultez notre guide des options de vitesse de lecture.

Veuillez noterPour trouver les cœurs disponibles : Gestionnaire des tâches -> Onglet Performances -> Cliquez sur CPU. ### Comparaison de performance

: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

Quel est le niveau d'amélioration des performances auquel je peux m'attendre ?

Lisons deux exemples d'images et comparons les temps de lecture pour des opérations normales, asynchrones et multithread.

![Image 2](/static-assets/barcode/how-to/async-multithread/sample2.webp)
Exemple de code-barres UPC-A montrant le numéro 0 123456 789012 pour la démonstration de la lecture de codes-barres multithread
Exemple de code-barres UPC-A montrant le numéro 771234567003 pour la démonstration de la lecture de codes-barres multithread
Lecture normale Lecture asynchrone Lecture multithread (4 cœurs)
1,75 seconde 1,67 seconde 1,17 seconde
La comparaison montre une augmentation significative des performances avec la lecture asynchrone et multithread. Le multithreading apporte une amélioration d'environ 33 % par rapport à la lecture normale, tandis que l'asynchrone apporte une amélioration d'environ 5 %. Cependant, ces opérations ont des objectifs et des approches différents. Choisissez l'approche qui correspond le mieux aux exigences de votre application. Les améliorations de performance varient en fonction de : - Nombre d'images traitées - Complexité de l'image et qualité du BarCode - Cœurs de processeur disponibles - Autres ressources système Pour les situations avec plusieurs codes-barres sur un même document, consultez le guide [Lire plusieurs codes-barres](https://ironsoftware.com/csharp/barcode/how-to/read-multiple-barcodes/). ### Quand choisir le multithreading plutôt que les opérations asynchrones? Choisissez le multithreading lorsque : 1. **Opérations dépendantes du CPU** : Le traitement implique des calculs intensifs comme des filtres d'image complexes ou des images haute résolution 2. **Traitement par lots** : Plusieurs images indépendantes nécessitent un traitement simultané 3. **Systèmes Multicœurs** : L'environnement de déploiement dispose de plusieurs cœurs CPU disponibles 4. **Critique de Performance** : La vitesse de traitement brute l'emporte sur l'efficacité des ressources Choisissez les opérations asynchrones lorsque : 1. **Opérations dépendantes de l'I/O** : La plupart du temps implique la lecture de fichiers ou l'attente de réponses réseau 2. **Applications UI** : Maintenir des interfaces utilisateur réactives est crucial 3. **Ressources Limitées** : Fonctionner sur des systèmes avec des cœurs CPU limités 4. **Applications web** : Traitement efficace de plusieurs requêtes simultanées ### Comment déterminer la valeur optimale de MaxParallelThreads? La valeur optimale de `MaxParallelThreads` dépend de plusieurs facteurs : 1. **Cœurs de processeur disponibles** : commencez par `` comme valeur de référence 2. **Type de Charge de Travail** : Pour une lecture pure de code-barres, utilisez 75 % des cœurs disponibles 3. **Ressources Système** : Laissez de la place pour le système d'exploitation et d'autres processus 4. **Résultats des Tests** : Faire un benchmark avec votre charge de travail spécifique Voici une approche pratique pour trouver la valeur optimale : ```csharp int optimalThreads = Math.Max(1, Environment.ProcessorCount - 1); ``` Pour les environnements de production, surveillez les performances et ajustez-les en fonction des schémas d'utilisation réels. Envisagez de mettre en œuvre [la configuration des clés de licence](https://ironsoftware.com/csharp/barcode/get-started/license-keys/) pour les déploiements en entreprise nécessitant des performances maximales. Pour connaître les capacités complètes de l'API, consultez la [référence de l'API IronBarcode](https://ironsoftware.com/csharp/barcode/object-reference/api/).

Questions Fréquemment Posées

Quelle est la différence entre async et multithreading lors de la lecture de codes-barres ?

Avec IronBarcode, les opérations asynchrones évitent de bloquer le thread principal pendant les tâches d'E/S comme la lecture de fichiers, tandis que le multithreading traite plusieurs codes-barres simultanément sur les cœurs du processeur. L'asynchronisme utilise les mots-clés async/await pour libérer le fil d'exécution principal pendant les opérations longues, tandis que le multithreading crée plusieurs fils d'exécution pour gérer le traitement des codes-barres en parallèle.

Comment mettre en œuvre la lecture asynchrone de codes-barres en C# ?

IronBarcode fournit les méthodes ReadAsync() et ReadPdfAsync() pour la lecture asynchrone de codes-barres. Il suffit d'utiliser ces méthodes avec les mots-clés async/await en C# pour lire les codes-barres des images et des PDF sans bloquer le fil d'exécution principal. Cette méthode est particulièrement utile lors du traitement de plusieurs fichiers d'images ou de documents PDF volumineux.

Comment puis-je activer le multithreading pour le traitement des codes-barres ?

Pour activer le multithreading dans IronBarcode, définissez la propriété Multithreaded sur 'true' dans les BarcodeReaderOptions. Vous pouvez également contrôler le nombre de threads parallèles en utilisant la propriété MaxParallelThreads, ce qui vous permet d'optimiser les performances en fonction des capacités de votre système.

Puis-je combiner l'asynchronisme et le multithreading pour des performances optimales ?

Oui, IronBarcode vous permet de combiner les deux approches. Vous pouvez utiliser ReadAsync() avec le multithreading activé en réglant Multithreaded = true et en configurant MaxParallelThreads dans BarcodeReaderOptions. Cette combinaison permet d'obtenir des opérations d'E/S non bloquantes et un traitement parallèle sur plusieurs cœurs de CPU.

Quand dois-je utiliser async vs multithreading pour la lecture de codes-barres ?

Utilisez des opérations asynchrones dans IronBarcode lorsque vous traitez des tâches liées aux E/S, comme la lecture de fichiers volumineux ou les requêtes réseau, car cela permet d'éviter le gel de l'interface utilisateur. Utilisez le multithreading lorsque vous devez traiter plusieurs codes-barres simultanément et que vous disposez de ressources CPU. Pour de meilleurs résultats, combinez les deux approches lorsque vous traitez plusieurs images de codes-barres ou PDF de grande taille.

Quels sont les avantages d'utiliser IronBarcode pour les opérations de code-barres ?

IronBarcode offre des avantages tels que la facilité d'intégration, la prise en charge de nombreux formats de codes-barres, la génération d'images de haute qualité et des capacités de lecture robustes, ce qui en fait un outil complet pour les opérations de codes-barres en C#.

IronBarcode offre-t-il des options de personnalisation pour l'apparence des codes-barres ?

Oui, IronBarcode offre des options de personnalisation étendues pour l'apparence des codes-barres, y compris des annotations de couleur, taille et texte, vous permettant d'adapter les codes-barres à vos exigences de conception spécifiques.

Comment IronBarcode peut-il aider à améliorer l'efficacité des processus d'affaires ?

IronBarcode améliore l'efficacité des processus d'affaires en permettant une génération et une lecture rapides et précises des codes-barres, réduisant les erreurs de saisie manuelle de données, et améliorant le suivi des stocks et des actifs.

Quelles compétences en programmation sont nécessaires pour implémenter IronBarcode dans un projet ?

Une connaissance de base de la programmation C# est suffisante pour implémenter IronBarcode dans un projet, car il fournit des méthodes simples et une documentation complète pour guider les développeurs.

IronBarcode convient-il aux petits projets ainsi qu'aux grandes applications d'entreprise ?

IronBarcode est conçu pour être évolutif et polyvalent, ce qui le rend approprié pour les petits projets ainsi que pour les grandes applications d'entreprise nécessitant des solutions de codes-barres robustes.

Hairil Hasyimi Bin Omar
Ingénieur logiciel
Comme tous les grands ingénieurs, Hairil est un apprenant avide. Il affine ses connaissances en C#, Python et Java, utilisant ces connaissances pour apporter de la valeur aux membres de l'équipe dans toute Iron Software. Hairil a rejoint l'équipe d'Iron Software depuis l'Université Teknologi MARA en Malaisie, ...
Lire la suite
Prêt à commencer?
Nuget Téléchargements 2,240,258 | Version : 2026.5 just released
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package BarCode
exécuter un échantillon regarder votre chaîne devenir un code-barres.