IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

C# Interlocked (Comment ça fonctionne pour les développeurs)

Jacob Mellor, Directeur technique @ Team Iron
Jacob Mellor
Updated: 21 avril 2026

Lors de l'utilisation d'applications multithread, assurer la sécurité des threads devient un facteur crucial pour prévenir les conditions de compétition et la corruption des données. Dans le monde de la manipulation des PDF avec IronPDF, ce problème n'est pas différent. Que vous génériez, manipuliez ou combiniez des PDF, exécuter ces tâches en parallèle peut entraîner des résultats inattendus si une synchronisation adéquate n'est pas maintenue. C'est là que la classe Interlocked de C# entre en jeu, offrant un moyen simple et efficace d'assurer des opérations sûres pour les threads dans un environnement multithread.

Qu'est-ce que la classe C# Interlocked ?

En C#, la classe Interlocked fournit des opérations atomiques pour les variables partagées par plusieurs threads. Cela garantit que les actions d'un thread ne seront pas interférées par un autre, ce qui est essentiel lorsque vous devez garantir que les opérations sont effectuées de manière contrôlée et cohérente. D'autre part, IronPDF est une bibliothèque puissante qui permet aux développeurs .NET de créer, éditer et manipuler des PDF.

Lorsque vous combinez les deux - Interlocked pour la sécurité des threads et IronPDF pour les opérations PDF - vous obtenez une solution puissante pour traiter les tâches PDF dans la programmation concurrente. Mais comment cela fonctionne-t-il, et pourquoi devriez-vous vous en préoccuper ? Plongeons plus profondément dans le rôle d'Interlocked dans le traitement d'IronPDF.

IronPDF : La bibliothèque PDF C# tout-en-un

C# Interlocked (Comment cela fonctionne pour les développeurs) : Figure 1

IronPDF est une bibliothèque polyvalente et riche en fonctionnalités conçue pour fonctionner sans heurts avec le C# et les applications .NET pour la génération et la manipulation de PDF. Sa simplicité et ses performances en font un choix populaire pour les développeurs qui ont besoin d'automatiser les tâches PDF. Voici quelques caractéristiques clés d'IronPDF :

  • Conversion HTML vers PDF : IronPDF vous permet de convertir du contenu HTML en PDF de haute qualité. Cela est particulièrement utile pour créer des rapports, des factures et tout contenu rendu en HTML.
  • Édition et manipulation de PDF : Vous pouvez manipuler des documents PDF existants en fusionnant , en divisant ou en extrayant des pages. De plus, IronPDF vous permet de modifier le contenu des PDFs, par exemple en ajoutant du texte, des images ou des annotations.
  • Formulaires et champs PDF : IronPDF prend en charge l'utilisation des formulaires PDF , y compris le remplissage programmatique des champs de formulaire . Cela est idéal pour automatiser le processus de génération de documents tels que des enquêtes, des applications et des contrats.
  • Signatures numériques : Cette fonctionnalité permet de signer numériquement des PDF avec une signature sécurisée, ce qui est essentiel pour les secteurs exigeant des transactions documentaires sécurisées, tels que les secteurs juridique et financier.

En tirant parti de ces caractéristiques, IronPDF aide les développeurs à créer, gérer et automatiser les flux de travail PDF efficacement, tout en garantissant des résultats de haute qualité. Que vous travailliez avec du contenu HTML dynamique ou manipuliez des documents existants, IronPDF fournit les outils nécessaires pour rationaliser vos tâches liées aux PDF.

Pourquoi Utiliser Interlocked dans le Traitement des IronPDF?

Sécurité des Threads et Concurrence

Dans des applications multithreads, plusieurs threads peuvent tenter d'accéder et de modifier les données partagées en même temps. Sans synchronisation adéquate, cela pourrait entraîner des problèmes tels que les conditions de compétition, où deux threads essaient de mettre à jour les mêmes données simultanément. Cela peut causer des résultats imprévisibles et des erreurs difficiles à déboguer.

La classe Interlocked garantit que ces opérations concurrentes sont gérées de manière atomique. En d'autres termes, lorsque vous utilisez Interlocked pour modifier la valeur d'un objet, le changement se produit comme une opération unique, ininterrompue, ce qui élimine le risque de condition de compétition.

Dans le contexte d'IronPDF, de nombreuses tâches de traitement des PDF - telles que l'ajout de pages, l'édition de contenu ou la génération de PDF à partir de sources multiples - sont des candidats idéaux pour le traitement parallèle. Sans synchronisation, exécuter ces opérations en parallèle pourrait entraîner des fichiers PDF corrompus ou des erreurs lors du traitement. L'utilisation d'Interlocked garantit que ces opérations restent sûres, même dans un environnement multithread.

Utilisation d'Interlocked avec Différents Types de Données

Lorsqu'il s'agit de variables de différents types de données, Interlocked peut être utilisé pour gérer en toute sécurité les mises à jour concurrentes. Explorons certains des types de données que vous pourriez rencontrer :

  • Valeur flottante : La méthode Interlocked.CompareExchange peut être utilisée avec des valeurs à virgule flottante lorsqu'un type de référence est requis pour l'opération.
  • Valeur d'origine : lors des mises à jour, il est important de travailler avec la valeur d'origine avant d'apporter des modifications afin de garantir la cohérence des opérations entre les threads.
  • Classe statique publique : Vous pouvez créer une classe statique publique pour encapsuler vos opérations Interlocked, ce qui rend votre code plus modulaire et plus facile à maintenir.
  • Valeur double : Interlocked ne prend pas directement en charge les valeurs double, car double n'est pas un type entier et les opérations atomiques sont optimisées pour les entiers. Si vous avez besoin d'opérations atomiques sur des valeurs double, vous pouvez contourner cela en utilisant des valeurs long et en convertissant manuellement entre les valeurs double et long.
public static class ThreadSafeOperations
{
    private static int counter = 0;
    public static void IncrementCounter()
    {
        // Safely increment the counter using Interlocked
        Interlocked.Increment(ref counter);
    }
}

Quand Utiliser Interlocked avec IronPDF

Vous devriez utiliser Interlocked dans tout scénario où plusieurs threads travaillent avec des ressources partagées. Les exemples incluent :

  • Suivi des numéros de page dans la génération de PDF.
  • Gestion de compteurs ou de listes qui sont accédés et modifiés par plusieurs threads.

En utilisant Interlocked pour ces opérations, vous assurez que les mises à jour sont sécurisées pour les threads, empêchant les conflits et garantissant l'intégrité des données.

Implémentation d'Interlocked avec IronPDF

Basic Usage of Interlocked in C#

La classe Interlocked offre plusieurs méthodes pour effectuer des opérations atomiques sur des variables, telles que :

  • Additionner : Additionne deux entiers et stocke le résultat dans une variable.
  • CompareExchange : Compare deux valeurs pour vérifier leur égalité et, si elles sont égales, remplace l'une des valeurs.
  • Incrémentation : Augmente une valeur entière de un et renvoie la nouvelle valeur.
  • Décrémentation : Diminue une valeur entière de un et renvoie la nouvelle valeur.

Par exemple, si vous avez besoin d'incrémenter un compteur partagé en toute sécurité dans un environnement multithread, utilisez Interlocked.Increment :

int counter = 0;
Interlocked.Increment(ref counter);

Cela garantit que le compteur est incrémenté en toute sécurité, même lorsque plusieurs threads le modifient simultanément.

Génération de PDF sécurisée pour les threads avec IronPDF et C# Interlocked

Voyons un exemple pratique de l'utilisation d'Interlocked avec IronPDF dans un contexte multithread. Supposons que vous génériez des fichiers PDF dans des threads parallèles et que chaque thread ait besoin d'un identifiant unique ou d'un numéro de page.

Voici comment vous pouvez implémenter cela :

using IronPdf;
using System;
using System.Threading;
using System.Collections.Generic;

class Program
{
    static int pageCount = 0;
    static readonly object lockObject = new object(); // Object for locking

    static void Main()
    {
        var threads = new Thread[5];
        List<PdfDocument> pdfList = new List<PdfDocument>();
        
        // Create threads for parallel PDF generation
        for (int i = 0; i < threads.Length; i++)
        {
            threads[i] = new Thread(() => GeneratePdf(pdfList));
            threads[i].Start();
        }

        // Wait for all threads to complete
        foreach (var thread in threads)
        {
            thread.Join();
        }

        // Merge all the generated PDFs
        PdfDocument finalPdf = pdfList[0]; // Start with the first document

        // Merge remaining PDFs into finalPdf
        for (int i = 1; i < pdfList.Count; i++)
        {
            finalPdf = PdfDocument.Merge(finalPdf, pdfList[i]);
        }

        // Save the merged PDF
        finalPdf.SaveAs("MergedGeneratedPDF.pdf");
        Console.WriteLine("All PDFs merged and saved successfully.");
    }

    static void GeneratePdf(List<PdfDocument> pdfList)
    {
        // Use ChromePdfRenderer instead of HtmlToPdf
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Use Interlocked to ensure unique page number per thread and using a "ref object" to reference the pageCount object 
        int pageNum = Interlocked.Increment(ref pageCount);

        // Generate a PDF page using ChromePdfRenderer
        var pdfPage = renderer.RenderHtmlAsPdf($"Page {pageNum} generated by thread {Thread.CurrentThread.ManagedThreadId}");

        // Add generated PDF page to the list (thread-safe)
        lock (lockObject) // Ensure thread-safety when adding to shared list
        {
            pdfList.Add(pdfPage);
        }

        string fileName = $"GeneratedPDF_{pageNum}.pdf";
        pdfPage.SaveAs(fileName);
        Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId} generated: {fileName}");
    }
}

Explication du code

Ce programme C# génère plusieurs PDF en parallèle en utilisant des threads, puis les fusionne en un seul PDF en utilisant IronPDF.

  1. Multithreading : 5 threads sont créés pour générer des PDF simultanément. Chaque thread obtient un numéro de page unique en utilisant Interlocked.Increment.
  2. Sécurité des threads : l'accès à la liste pdfList partagée est synchronisé avec une instruction de verrouillage afin d'éviter les conditions de concurrence lors de l'ajout de fichiers PDF à la liste.
  3. Fusion des PDF : Une fois tous les threads terminés, les PDF de pdfList sont fusionnés séquentiellement à l'aide de PdfDocument.Merge, et le PDF final est enregistré.
  4. Synchronisation : Le thread principal attend que tous les threads aient terminé leur exécution à l'aide de thread.Join() avant de procéder à la fusion.

Sortie Console

C# Interlocked (Comment cela fonctionne pour les développeurs) : Figure 2 - Sortie de la console pour la génération de PDF sécurisée avec C# Interlocked

Sortie PDF

C# Interlocked (Comment cela fonctionne pour les développeurs) : Figure 3 - Sortie PDF pour la génération de PDF sécurisée avec C# Interlocked

Pourquoi C'est Sûr pour les Threads

  • Modification de liste sécurisée pour les threads : l'utilisation d'un verrou garantit que la modification de la liste pdfList partagée est sécurisée, empêchant ainsi plusieurs threads d'ajouter simultanément des éléments à la liste et de provoquer des conditions de concurrence.
  • Pas besoin de code asynchrone : le code ne nécessite pas async/await car les opérations sont séquentielles et n'impliquent pas d'E/S ou d'appels réseau de longue durée. La principale préoccupation ici est de s'assurer que l'accès aux données partagées (la liste) est correctement synchronisé.

Gestion des Erreurs et Considérations de Performance

Lors de l'utilisation de code multithread, la gestion des erreurs et l'optimisation des performances sont essentielles.

  • Gestion des erreurs : Bien qu'Interlocked assure la sécurité des threads, vous devez tout de même gérer les erreurs potentielles dans votre logique de génération de PDF. Vous pouvez utiliser des blocs try-catch pour gérer gracieusement les exceptions :
try
{
    finalPdf.SaveAs(fileName);
}
catch (Exception ex)
{
    Console.WriteLine($"Error generating PDF: {ex.Message}");
}
  • Considérations relatives aux performances : Bien qu'Interlocked soit optimisé pour les opérations atomiques, une synchronisation excessive peut engendrer une surcharge. Si vous gérez un grand volume d'opérations concurrentes, vous devez minimiser la synchronisation aux variables partagées les plus critiques pour réduire la contention.

Conclusion

La sécurité des threads est cruciale dans les applications multithread, surtout quand il s'agit de ressources partagées comme les compteurs ou les listes. Lorsque vous utilisez IronPDF pour la création ou la manipulation de PDF, intégrer Interlocked assure que les opérations restent sûres pour les threads et fiables.

En utilisant Interlocked conjointement avec IronPDF, les développeurs .NET peuvent augmenter efficacement leurs flux de travail de traitement PDF tout en maintenant l'intégrité des données. Que vous génériez des rapports, fusionniez des documents ou effectuiez des manipulations PDF complexes en parallèle, Interlocked aide à maintenir la cohérence et éviter les conditions de compétition.

Avec ces meilleures pratiques, vous pouvez tirer pleinement parti des capacités d'IronPDF et vous assurer que vos flux de travail PDF multithread sont efficaces et robustes. Prêt à commencer à intégrer IronPDF dès aujourd'hui et à découvrir ses fonctionnalités puissantes de création et de manipulation de PDF par vous-même !

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

OR
bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez « IronPDF »
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

ou téléchargez l'installateur Windows ici.

  1. Téléchargez et décompressez IronPDF à un emplacement tel que ~/Libs dans votre répertoire de solution
  2. Dans l'explorateur de solutions Visual Studio, faites un clic droit sur Références. Sélectionnez Parcourir, « IronPDF.dll »

Licences à partir de 749 $