Passer au contenu du pied de page
.NET AIDE

C# Nito.Asyncex (Comment ça fonctionne pour les développeurs)

La programmation asynchrone a pris de l'importance dans le domaine de la programmation C# pour créer des applications évolutives et réactives. Avec son abondance d'outils et de techniques asynchrones, AsyncEx est un package robuste qui facilite la programmation asynchrone en C#. Les développeurs peuvent facilement créer des applications complexes en combinant IronPDF, une bibliothèque C# pour produire, éditer et traiter des documents PDF, avec d'autres bibliothèques.

Nito.AsyncEx fournit des primitives de coordination, des collections asynchrones, des primitives de synchronisation asynchrone et de nombreuses autres fonctionnalités. Ces caractéristiques permettent aux programmeurs de créer du code asynchrone lisible, gérable et efficace.

Nous verrons comment utiliser Nito.AsyncEx avec IronPDF dans ce guide pour tirer parti de la programmation asynchrone dans des activités impliquant des PDF. Nous vous montrerons comment tirer le meilleur parti de ces deux bibliothèques pour améliorer votre expérience de développement C#, des exemples d'utilisation simples aux stratégies complexes.

Qu'est-ce que Nito.AsyncEx ?

Un package C# appelé Nito.AsyncEx a été créé par Stephen Cleary pour améliorer et accélérer la programmation asynchrone dans le framework .NET. Il fournit un ensemble étendu d'utilitaires et de techniques pour surmonter les défis liés à l'écriture de programmes asynchrones. Nito.AsyncEx est une bibliothèque .NET qui est principalement utilisée pour développer un modèle asynchrone basé sur des tâches.

Nito.AsyncEx est une bibliothèque d'assistance précieuse pour les développeurs C#, offrant une intégration transparente des modèles asynchrones basés sur des tâches dans leurs projets. Avec sa syntaxe intuitive, les développeurs peuvent utiliser des mots-clés comme await task et hold await task pour gérer efficacement les opérations asynchrones. Cette bibliothèque .NET facilite les opérations asynchrones verrouillées, assurant la sécurité des threads et empêchant les conditions de course. Globalement, Nito.AsyncEx simplifie la programmation asynchrone, permettant aux développeurs de se concentrer sur la création d'applications robustes et évolutives.

C# Nito.AsyncEx (Comment ça fonctionne pour les développeurs): Figure 1 - Page 'read me' GitHub d'AsyncEx

Fonctionnalités de Nito.AsyncEx

Primitives avec coordination asynchrone :

Des versions des primitives de synchronisation courantes, telles que les verrous, sémaphores, événements de décompte et barrières, sont proposées par AsyncEx. En coordonnant l'accès aux ressources partagées dans des contextes asynchrones, ces techniques aident les développeurs à éviter les problèmes de course et assurent la sécurité des threads.

Collections asynchrones :

Types de collections courants, notamment les files d'attente, piles et tampons, sont implémentés de manière asynchrone dans la bibliothèque. Ces collections asynchrones améliorent la performance et l'évolutivité des flux de travail asynchrones en facilitant le traitement et la manipulation efficace des données asynchrones.

Nito est un flux asynchrone :

AsyncEx fournit des outils pour travailler avec des flux asynchrones, facilitant l'intégration des pipelines de traitement de données asynchrones et des activités I/O. Les développeurs peuvent augmenter la réactivité et l'efficacité des activités liées à l'I/O en lisant ou en écrivant dans des flux asynchrones de manière asynchrone.

Organisation des tâches :

Avec les outils de planification de la bibliothèque, les développeurs peuvent gérer le timing et la méthode d'actions asynchrones. Cette fonctionnalité permet de gérer plus précisément l'exécution des tâches, optimisant l'utilisation des ressources et améliorant la performance de l'application.

Extensions et méthodologies asynchrones :

En ajoutant des méthodes et extensions asynchrones au framework .NET, Nito.AsyncEx facilite l'utilisation des modèles et processus de programmation asynchrone standards. Il est désormais plus simple pour les développeurs de créer et de déboguer des applications asynchrones grâce à ces améliorations, qui améliorent la lisibilité et la maintenabilité du code asynchrone.

Créer et configurer un projet

Les étapes ci-dessous peuvent être utilisées pour créer et configurer Nito.AsyncEx dans un projet C# :

Installer le package Nito.AsyncEx

En utilisant le gestionnaire de paquets .NET CLI ou NuGet, ajoutez le package Nito.AsyncEx à votre projet. En utilisant la console du gestionnaire de paquets ou un terminal, tapez la commande suivante pour installer le package :

Install-Package Nito.AsyncEx

Configurer le projet Nito.AsyncEx

Après avoir installé le package, vous pouvez utiliser Nito.AsyncEx dans votre projet. Là où dans vos projets C# vous prévoyez d'utiliser la fonctionnalité de Nito.AsyncEx, importez son espace de noms :

using Nito.AsyncEx;
using Nito.AsyncEx;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Exemple de code d'utilisation de Nito.AsyncEx

Maintenant, vous pouvez utiliser dans votre code la fonctionnalité offerte par Nito.AsyncEx. Par exemple, vous pouvez améliorer et simplifier vos flux de travail de programmation asynchrone en utilisant des primitives de coordination asynchrones comme les verrous et sémaphores, collections asynchrones, flux asynchrones, et plus.

using System;
using System.Threading.Tasks;
using Nito.AsyncEx;

class Program
{
    static async Task Main(string[] args)
    {
        // Create an instance of AsyncLock
        var mutex = new AsyncLock();

        // It can be locked asynchronously using await
        using (await mutex.LockAsync())
        {
            // Code inside the lock
            Console.WriteLine("Inside the lock.");

            // Simulate some asynchronous operation
            await Task.Delay(1000); // Delay for 1 second

            Console.WriteLine("Lock released.");
        }
    }
}
using System;
using System.Threading.Tasks;
using Nito.AsyncEx;

class Program
{
    static async Task Main(string[] args)
    {
        // Create an instance of AsyncLock
        var mutex = new AsyncLock();

        // It can be locked asynchronously using await
        using (await mutex.LockAsync())
        {
            // Code inside the lock
            Console.WriteLine("Inside the lock.");

            // Simulate some asynchronous operation
            await Task.Delay(1000); // Delay for 1 second

            Console.WriteLine("Lock released.");
        }
    }
}
Imports System
Imports System.Threading.Tasks
Imports Nito.AsyncEx

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Create an instance of AsyncLock
		Dim mutex = New AsyncLock()

		' It can be locked asynchronously using await
		Using Await mutex.LockAsync()
			' Code inside the lock
			Console.WriteLine("Inside the lock.")

			' Simulate some asynchronous operation
			Await Task.Delay(1000) ' Delay for 1 second

			Console.WriteLine("Lock released.")
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

Pour vous assurer qu'il n'y a pas d'erreurs de compilation, construisez votre code C#. Ensuite, exécutez votre application pour vous assurer que Nito.AsyncEx fonctionne comme il se doit.

C# Nito.AsyncEx (Comment ça fonctionne pour les développeurs): Figure 2 - Sortie de la console pour l'exemple de code

Ces procédures vous permettront d'utiliser la fonctionnalité de Nito.AsyncEx pour des activités de programmation asynchrone en le créant et le configurant dans un projet C#.

Commencer avec IronPDF

Qu'est-ce qu'IronPDF ?

C# Nito.AsyncEx (Comment ça fonctionne pour les développeurs): Figure 3 - Page Web IronPDF

IronPDF est une bibliothèque riche en fonctionnalités pour travailler avec les documents PDF dans les applications .NET. Avec son vaste ensemble de fonctionnalités, les utilisateurs peuvent modifier les documents PDF existants en ajoutant, supprimant ou réorganisant des sections, ainsi que créer des PDFs à partir de rien ou de contenu HTML. IronPDF facilite le travail avec des PDFs dans les applications .NET en fournissant aux développeurs une API puissante pour créer, modifier et convertir des fichiers PDF.

Caractéristiques clés d'IronPDF

  • Convertir HTML en PDF : IronPDF vous permet d'utiliser du contenu HTML, tel que le CSS et le JavaScript, pour créer des documents PDF de haute qualité. Lors de la génération de PDFs à partir de pages Web ou de contenu dynamique, cette fonctionnalité est particulièrement utile.
  • Modification et amélioration des PDFs : IronPDF offre des capacités d'édition pour les documents PDF préexistants. Une page d'un PDF peut être extraite, du texte, des images, des filigranes ou des commentaires peuvent être ajoutés, et plusieurs PDFs peuvent être combinés en un seul document.
  • Créer un PDF immédiatement : Vous pouvez ajouter des textes, des images, des formes et d'autres objets de façon programmatique à de nouveaux documents PDF en utilisant l'API d'IronPDF. Cela permet la génération dynamique de rapports PDF, de factures, et d'autres sorties basées sur des documents.
  • Sécurité PDF : En ajoutant une sécurité par mot de passe et en cryptant les documents PDF à l'aide d'IronPDF, vous pouvez contrôler l'accès et protéger des données importantes.
  • Formulaires PDF : Les utilisateurs peuvent travailler avec les documents PDF en utilisant IronPDF pour créer et remplir des formulaires PDF et entrer des données dans les champs de formulaire.
  • Extraits de texte : IronPDF extrait le contenu textuel des documents PDF afin de rendre les données textuelles faciles à rechercher, analyser et manipuler.
  • Conversion en formats d'image : Étant donné qu'IronPDF peut convertir les documents PDF en formats d'image populaires comme le PNG, le JPEG, et le BMP, il est adapté dans les scénarios où des images sont nécessaires à la place des PDFs.

Installer IronPDF

Assurez-vous que les deux bibliothèques sont ajoutées à votre projet avant de commencer à utiliser Nito.AsyncEx en C# avec IronPDF. Vous pouvez utiliser le gestionnaire de paquets .NET CLI ou NuGet pour ajouter IronPDF à votre projet. La commande utilisée dans la console du gestionnaire de paquets NuGet est ci-dessous :

Install-Package IronPdf

Intégrer IronPDF avec Nito.AsyncEx

Disons que vous avez un cas où vous souhaitez utiliser IronPDF pour générer un document PDF de manière asynchrone et Nito.AsyncEx pour gérer la concurrence. Je vais vous donner un exemple simple pour illustrer cela :

using System;
using System.Threading.Tasks;
using Nito.AsyncEx;
using IronPdf;

class Program
{
    static async Task Main(string[] args)
    {
        // Create an asynchronous lock
        AsyncLock asyncLock = new AsyncLock();

        // Use the lock to ensure only one thread is accessing IronPDF at a time
        using (await asyncLock.LockAsync())
        {
            // Generate the PDF document asynchronously
            await GeneratePdfAsync();
        }
    }

    static async Task GeneratePdfAsync()
    {
        // Create IronPDF Renderer
        var Renderer = new IronPdf.HtmlToPdf();

        // Create HTML content for the PDF
        string htmlContent = "<h1>Hello, IronPDF!</h1>";

        // Convert HTML to PDF asynchronously
        var pdfDocument = await Renderer.RenderHtmlAsPdfAsync(htmlContent);

        // Save the PDF document
        pdfDocument.SaveAs("example.pdf");
    }
}
using System;
using System.Threading.Tasks;
using Nito.AsyncEx;
using IronPdf;

class Program
{
    static async Task Main(string[] args)
    {
        // Create an asynchronous lock
        AsyncLock asyncLock = new AsyncLock();

        // Use the lock to ensure only one thread is accessing IronPDF at a time
        using (await asyncLock.LockAsync())
        {
            // Generate the PDF document asynchronously
            await GeneratePdfAsync();
        }
    }

    static async Task GeneratePdfAsync()
    {
        // Create IronPDF Renderer
        var Renderer = new IronPdf.HtmlToPdf();

        // Create HTML content for the PDF
        string htmlContent = "<h1>Hello, IronPDF!</h1>";

        // Convert HTML to PDF asynchronously
        var pdfDocument = await Renderer.RenderHtmlAsPdfAsync(htmlContent);

        // Save the PDF document
        pdfDocument.SaveAs("example.pdf");
    }
}
Imports System
Imports System.Threading.Tasks
Imports Nito.AsyncEx
Imports IronPdf

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Create an asynchronous lock
		Dim asyncLock As New AsyncLock()

		' Use the lock to ensure only one thread is accessing IronPDF at a time
		Using Await asyncLock.LockAsync()
			' Generate the PDF document asynchronously
			Await GeneratePdfAsync()
		End Using
	End Function

	Private Shared Async Function GeneratePdfAsync() As Task
		' Create IronPDF Renderer
		Dim Renderer = New IronPdf.HtmlToPdf()

		' Create HTML content for the PDF
		Dim htmlContent As String = "<h1>Hello, IronPDF!</h1>"

		' Convert HTML to PDF asynchronously
		Dim pdfDocument = Await Renderer.RenderHtmlAsPdfAsync(htmlContent)

		' Save the PDF document
		pdfDocument.SaveAs("example.pdf")
	End Function
End Class
$vbLabelText   $csharpLabel

Dans ce code :

  • Les espaces de noms requis par Nito.AsyncEx et IronPDF sont importés.
  • Nous instancions un AsyncLock en utilisant Nito.AsyncEx, puis l'utilisons pour garantir un accès sécurisé aux threads lors de la génération de PDFs.
  • Dans la méthode Main, nous acquérons le verrou en utilisant LockAsync() pour garantir un accès exclusif à IronPDF. La génération de documents PDF se fait à l'intérieur du verrou.
  • La fonction GeneratePdfAsync montre comment générer un document PDF de manière asynchrone à l'aide d'IronPDF. Il convertit le contenu HTML en PDF, puis enregistre le document sur le disque.

Sortie

C# Nito.AsyncEx (Comment ça fonctionne pour les développeurs): Figure 4 - PDF généré à partir de l'exemple de code précédent

Conclusion

En conclusion, Nito.AsyncEx et IronPDF sont intégrés en C#, combinant la force de la programmation asynchrone avec des capacités efficaces de production de PDF. Les développeurs peuvent contrôler la concurrence et synchroniser l'accès à la fonctionnalité de rendu d'IronPDF en utilisant les primitives de coordination asynchrone de Nito.AsyncEx, assurant la sécurité des threads et une utilisation efficace des ressources.

Avec les capacités de rendu HTML en PDF d'IronPDF et le paradigme async/await de Nito.AsyncEx, les développeurs peuvent créer des applications évolutives et réactives qui produisent des documents PDF de manière asynchrone. Cette combinaison maintient l'expérience utilisateur réactive tout en permettant la création efficace de PDFs à partir de contenu HTML.

Dans l'ensemble, Nito.AsyncEx et IronPDF collaborent pour permettre aux développeurs C# de créer des applications performantes qui exploitent la programmation asynchrone et la création de PDF, augmentant ainsi la productivité et offrant des expériences utilisateur exceptionnelles.

IronPDF peut offrir une documentation riche en fonctionnalités et conviviale pour les développeurs, ainsi que des solutions logicielles haut de gamme pour les clients et les utilisateurs finaux en intégrant les technologies IronPDF et Iron Software dans votre pile de développement d'applications d'entreprise. De plus, cette base solide facilitera les projets, les systèmes back-end et l'amélioration des processus. Iron Software commence sa tarification à $799. La documentation riche de ces technologies, leur communauté de développeurs en ligne dynamique et leurs mises à jour fréquentes en font un excellent choix pour les projets de développement logiciel modernes.

Questions Fréquemment Posées

Comment Nito.AsyncEx et IronPDF peuvent-ils être utilisés ensemble dans des applications C# ?

Vous pouvez utiliser Nito.AsyncEx pour gérer la concurrence et la synchronisation lors de la génération de documents PDF avec IronPDF en C#. Cette combinaison permet des opérations asynchrones efficaces, assurant la sécurité des threads et évitant les conditions de compétition lors du traitement des PDF.

Quelles fonctionnalités asynchrones Nito.AsyncEx offre-t-il aux développeurs C# ?

Nito.AsyncEx fournit des primitives de coordination asynchrones, telles que des verrous et sémaphores, des collections et flux asynchrones qui aident à gérer des modèles asynchrones basés sur les tâches en C#, assurant des opérations sûres pour les threads et une gestion efficace des ressources.

Comment IronPDF facilite-t-il le travail avec les PDF en C# ?

IronPDF permet aux développeurs de créer, éditer et convertir des PDF en C#. Il prend en charge la conversion HTML en PDF, l'édition et la création de PDF, ce qui en fait un outil essentiel pour la gestion programmée des fichiers PDF dans les applications .NET.

La programmation asynchrone peut-elle améliorer les performances de la génération de PDF ?

Oui, intégrer la programmation asynchrone avec une bibliothèque comme IronPDF peut améliorer considérablement les performances de génération de PDF en permettant des opérations concurrentes et une utilisation efficace des ressources, évitant ainsi les opérations de blocage et améliorant la réactivité de l'application.

Comment assurez-vous la sécurité des threads lors de la génération asynchrone de PDF en C# ?

La sécurité des threads dans la génération asynchrone de PDF peut être assurée en utilisant les verrous et primitives de synchronisation asynchrones de Nito.AsyncEx, qui coordonnent l'accès aux fonctions de rendu PDF d'IronPDF, prévenant les conditions de compétition et assurant des opérations concurrentes sûres.

Quels sont les avantages d'utiliser les modèles async/await avec les bibliothèques PDF en C# ?

Utiliser les modèles async/await avec des bibliothèques PDF comme IronPDF en C# permet aux développeurs d'écrire un code asynchrone plus lisible et maintenable. Cela aide à gérer les tâches asynchrones plus efficacement, améliorant les performances de l'application et l'expérience utilisateur en empêchant le blocage de l'interface utilisateur.

Comment pouvez-vous installer Nito.AsyncEx pour l'utiliser dans un projet C# ?

Vous pouvez installer Nito.AsyncEx dans un projet C# en utilisant le gestionnaire de packages NuGet ou .NET CLI avec la commande : Install-Package Nito.AsyncEx, qui ajoutera les bibliothèques nécessaires à votre projet pour la programmation asynchrone.

Quels rôles jouent les collections et flux asynchrones dans Nito.AsyncEx ?

Les collections et flux asynchrones dans Nito.AsyncEx permettent aux développeurs de gérer le flux de données et le traitement de manière asynchrone, facilitant le traitement des données sans blocage et améliorant les performances et la scalabilité globale de l'application dans un environnement C#.

Pourquoi les développeurs C# devraient-ils envisager d'intégrer la programmation asynchrone avec le traitement PDF ?

Intégrer la programmation asynchrone avec le traitement PDF permet aux développeurs C# de créer des applications qui gèrent efficacement de grands documents PDF sans bloquer le thread principal, résultant en des applications réactives qui peuvent évoluer et bien performer sous de lourdes charges.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite