IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

Mot-clé volatile en C# : comment ça fonctionne pour les développeurs

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

Le mot-clé volatile en C# est utilisé pour signaler qu'un champ peut être mis à jour par des threads exécutés simultanément. Un champ marqué comme volatile alerte le compilateur et l'environnement d'exécution de la possibilité que des threads concurrents ou d'autres composants du programme puissent changer la valeur du champ sans avertissement. Cela garantit que les accès mémoire à ce champ ne seront pas optimisés par le compilateur, ce qui pourrait entraîner un comportement inattendu dans [des applications multithread](https://en.wikipedia.org/wiki/Multithreading_(computer_architecture).

Une bibliothèque C# bien connue pour créer et modifier des documents PDF est appelée IronPDF - .NET PDF Library. Savoir comment utiliser le mot-clé volatile de manière appropriée est crucial lorsqu'on travaille avec des applications multithread ou des programmes qui utilisent IronPDF pour la création ou la manipulation de PDF. Cela aidera à garantir que les données sont correctement synchronisées et cohérentes lorsque plusieurs threads y accèdent.

Ce tutoriel couvrira les meilleures façons d'utiliser IronPDF et le mot-clé volatile pour créer des applications multithreads fiables qui génèrent ou manipulent des PDFs. Nous examinerons les utilisations courantes des champs volatils, comment déclarer et utiliser correctement les champs volatils, et les pratiques recommandées pour assurer la sécurité des threads de vos applications utilisant IronPDF. Commençons maintenant !

Comment utiliser le mot-clé C# Volatile

  1. Importer les Bibliothèques Nécessaires.
  2. Déclarer la Variable Volatile.
  3. Démarrer la Tâche de Génération de PDF.
  4. Définir la Variable Volatile dans la Tâche.
  5. Vérifier la Variable Volatile.
  6. Attendre la Génération du PDF.
  7. Gérer l'Achèvement du PDF.

Qu'est-ce que C# Volatile ?

Déclarer un champ qui pourrait être modifié par plusieurs threads exécutés simultanément se fait par l'utilisation du mot-clé volatile. Un champ est averti par le compilateur et l'environnement d'exécution que d'autres composants du programme, y compris des threads concurrents, peuvent modifier sa valeur sans avertissement lorsqu'il est désigné comme volatile. Pour cette raison, les lectures et écritures sur le champ volatile sont toujours effectuées directement depuis et vers la mémoire principale en premier.

Le mot-clé volatile aborde les problèmes liés au réordonnancement des opérations de mémoire en imposant des barrières de mémoire. Une barrière mémoire garantit que les opérations mémoire ne sont pas réordonnées lors des accès volatiles, empêchant un comportement inattendu dans les scénarios multithreadés.

En utilisant implicitement des barrières de mémoire avant et après une lecture volatile ou lors des opérations d'écriture volatiles, volatile garantit le bon ordre des opérations de mémoire, améliorant ainsi la sécurité des threads et la cohérence des données dans des environnements concurrents par opposition aux problèmes qui pourraient survenir en utilisant n'importe quel objet non volatile.

Objectif du Mot-Clé Volatile

Le mot-clé volatile en C# est principalement utilisé pour gérer les situations dans lesquelles plusieurs threads se synchronisent mal pour accéder et modifier l'emplacement de mémoire des données partagées. Dans des environnements multithreadés, le compilateur pourrait optimiser les accès mémoire d'une manière qui pourrait causer un comportement imprévisible si le modificateur volatile n'est pas présent.

Les développeurs peuvent indiquer au compilateur qu'une valeur de champ peut changer de manière asynchrone et que l'intégrité des données nécessite un accès direct à la mémoire en désignant le champ comme volatile.

Comportement des Mots-Clés Volatiles

Le compilateur et l'environnement d'exécution s'assurent que chaque opération mémoire de lecture et d'écriture sur un champ marqué comme volatile évite d'utiliser toute méthode de mise en cache possible. Cela indique que la valeur d'un champ volatile sera toujours récupérée de la mémoire principale lors de l'accès suivant, même si un thread la met en cache, plutôt que de s'appuyer sur la même valeur une fois qu'elle a été mise en cache. De même, les modifications apportées par un thread sont visibles pour tous les autres threads accédant au même champ, car les écritures sur un champ volatile sont instantanément propagées à la mémoire.

Utiliser Volatile pour l'État Partagé

Utilisons quelques exemples de code pour démontrer comment utiliser le mot-clé volatile.

using System;
using System.Threading;

class SharedStateExample
{
    private volatile bool _isRunning = true;

    public void Run()
    {
        Thread thread1 = new Thread(ChangeState);
        Thread thread2 = new Thread(ReadState);
        thread1.Start();
        thread2.Start();
    }
    
    private void ChangeState()
    {
        while (_isRunning)
        {
            Console.WriteLine("Changing state...");
            Thread.Sleep(1000);
            _isRunning = false;
        }
    }

    private void ReadState()
    {
        while (_isRunning)
        {
            Console.WriteLine("Reading state...");
            Thread.Sleep(500);
        }
        Console.WriteLine("State is no longer running.");
    }
}

class Program
{
    static void Main(string[] args)
    {
        SharedStateExample example = new SharedStateExample();
        example.Run();
    }
}

La classe SharedStateExample dans cet exemple a un champ _isRunning qui est marqué comme un objet volatil. Une méthode ChangeState est construite pour changer l'état, et une méthode ReadState établit une opération de lecture volatile.

Alors que la méthode ReadState vérifie continuellement la valeur de _isRunning, la méthode ChangeState attend et puis définit _isRunning à faux. Les changements effectués par un seul thread sont instantanément visibles pour l'autre thread grâce à la volatilité de _isRunning.

Double Vérification de Verrouillage avec Volatile

using System;

class Singleton
{
    private static volatile Singleton _instance;
    private static readonly object _lock = new object();
    
    private Singleton() { }
    
    public static Singleton GetInstance()
    {
        if (_instance == null)
        {
            lock (_lock)
            {
                if (_instance == null)
                {
                    _instance = new Singleton();
                }
            }
        }
        return _instance;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Singleton instance1 = Singleton.GetInstance();
        Singleton instance2 = Singleton.GetInstance();
        Console.WriteLine("Are instances equal? " + (instance1 == instance2));
    }
}

Dans cet exemple, nous utilisons un mécanisme de double vérification de verrouillage pour construire un design Singleton sécurisé pour les threads. Pour garantir que les modifications effectuées entre plusieurs threads sont à jour et visibles, le champ _instance est désigné comme volatile. Cela évite les situations dans lesquelles un seul thread remarque une instance Singleton qui n'est qu'à moitié initialisée. Même dans un contexte multithreadé, le mécanisme de double vérification de verrouillage garantit qu'une seule instance du Singleton est produite.

Qu'est-ce que IronPDF?

La bibliothèque C# IronPDF - Génération et Édition de PDF permet aux programmeurs de créer, modifier et rendre des documents PDF à l'intérieur des applications .NET. Son ensemble de fonctionnalités riche facilite le travail avec les fichiers PDF. Les documents PDF qui existent déjà peuvent être édités, divisés et fusionnés. Les documents PDF peuvent être créés en HTML, images, et autres formes. Les PDF peuvent avoir du texte, des photos et d'autres données annotées dessus.

Caractéristiques de IronPDF

Annotation de texte et d'images

Avec IronPDF, vous pouvez annoter des documents PDF par programmation avec du texte, des images et d'autres données. Vous pouvez annoter les fichiers PDF avec des signatures, des tampons et des commentaires avec cet outil.

Sécurité des PDF

IronPDF vous permet de spécifier différentes autorisations, y compris l'impression, la copie et l'édition du document, et il peut crypter les documents PDF avec des mots de passe. Cela aide à contrôler qui a accès aux fichiers PDF et à protéger les informations confidentielles.

Remplissage de formulaires PDF interactifs

Avec IronPDF, les formulaires PDF interactifs peuvent être remplis de manière programmatique. Cette fonctionnalité est utile pour créer des documents personnalisés basés sur l'entrée de l'utilisateur et automatiser les soumissions de formulaires.

Compression et optimisation des PDF

IronPDF offre des choix pour l'optimisation et la compression des fichiers PDF qui minimisent la taille sans sacrifier la qualité. En conséquence, les documents PDF exigent moins d'espace de stockage et fonctionnent plus efficacement.

Compatibilité multiplateforme

IronPDF est conçu pour fonctionner sans faille avec des programmes .NET sur une variété de systèmes d'exploitation, y compris Windows, Linux et macOS. Des frameworks .NET bien connus comme ASP.NET, .NET Core et Xamarin y sont intégrés.

Créer un Nouveau Projet Visual Studio

Créer un projet de console dans Visual Studio est un processus simple. Pour démarrer une application console, suivez ces étapes simples dans l'environnement Visual Studio :

Avant d'utiliser Visual Studio, assurez-vous qu'il est installé sur votre ordinateur.

Démarrer un Nouveau Projet

Sélectionnez Fichier, puis Nouveau, et enfin Projet.

C# Volatile (Comment ça fonctionne pour les développeurs) : Figure 1

Dans la boîte "Créer un nouveau projet", sélectionnez votre langage de programmation préféré (C#, par exemple) dans la liste à gauche.

La liste de référence de modèles de projet suivante a le modèle "App Console" ou "App Console (.NET Core)" disponible pour la sélection.

Fournissez un nom pour votre projet dans le champ " Nom ".

C# Volatile (Comment ça fonctionne pour les développeurs) : Figure 2

Sélectionnez l'emplacement où le projet sera conservé.

Cliquer sur "Créer" va démarrer le projet d'application console.

C# Volatile (Comment ça fonctionne pour les développeurs) : Figure 3

Installation d'IronPDF

L'élément de menu Outils de Visual Studio contient l'interface de ligne de commande Visual. Sélectionnez le Gestionnaire de Packages NuGet. Dans l'onglet terminal de gestion des paquets, vous devez taper la commande suivante.

PM > Install-Package IronPdf

Alternativement, vous pouvez utiliser le Gestionnaire de Packages. L'installation du paquet directement dans la solution est possible avec l'option NuGet Package Manager. Utilisez la boîte de recherche sur le site Gestionnaire NuGet pour localiser les packages. La capture d'écran d'exemple suivante montre combien il est facile de rechercher "IronPDF" dans le gestionnaire de packages :

C# Volatile (Comment ça fonctionne pour les développeurs) : Figure 4 - Installer IronPDF depuis le Package Manager NuGet

Les résultats de recherche pertinents sont affichés dans l'image ci-dessus. Veuillez apporter les modifications suivantes pour que le logiciel s'installe plus facilement sur votre machine.

Après avoir téléchargé et installé le package, nous pouvons maintenant l'utiliser dans le projet en cours.

Assurer la sécurité des threads lors de la génération de PDF avec C# Volatile et IronPDF

Maintenant, utilisons IronPDF et le mot-clé volatile ensemble dans un programme C#. Une bibliothèque C# bien connue pour créer et modifier des documents PDF est appelée IronPDF. La sécurité des threads doit être maintenue lors de la création ou du traitement de PDF dans des applications multithreadées utilisant IronPDF.

Voici un exemple vous montrant comment utiliser le mot-clé volatile d'IronPDF pour créer des documents PDF dans un environnement multithreadé.

using IronPdf;
using System;
using System.Threading;

class PdfGenerator
{
    private volatile bool _isRunning = true;
    private readonly object _lock = new object();
    
    public void GeneratePdf(string filePath)
    {
        Thread thread = new Thread(() =>
        {
            while (_isRunning)
            {
                // Generate PDF document
                GenerateDocument(filePath);
                // Sleep for some time
                Thread.Sleep(5000);
            }
        });
        thread.Start();
    }
    
    public void StopPdfGeneration()
    {
        lock (_lock)
        {
            _isRunning = false;
        }
    }
    
    private void GenerateDocument(string filePath)
    {
        // Load HTML content
        string htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
        // Convert HTML to PDF
        var renderer = new ChromePdfRenderer();
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        // Save PDF to file
        pdfDocument.SaveAs(filePath);
        // Output status
        Console.WriteLine($"PDF generated and saved to {filePath}");
    }
}

class Program
{
    static void Main(string[] args)
    {
        PdfGenerator pdfGenerator = new PdfGenerator();
        // Start PDF generation
        pdfGenerator.GeneratePdf("output.pdf");
        // Wait for user input to stop PDF generation
        Console.WriteLine("Press any key to stop PDF generation...");
        Console.ReadKey();
        // Stop PDF generation
        pdfGenerator.StopPdfGeneration();
    }
}

volatile bool isRunning : Nous désignons un champ _isRunning comme une variable volatile pour indiquer la possibilité que plusieurs threads y apportent des changements. La génération de documents PDF est gérée par ce champ. La création de PDF continue si _isRunning est vrai ; sinon, elle s'arrête.

GeneratePdf(string filePath) : Cette fonction lance un nouveau thread qui crée des documents PDF selon une planification. Nous vérifions en continu le drapeau _isRunning à l'intérieur du thread principal. Si oui, nous utilisons IronPDF pour créer un document PDF et l'enregistrer dans le répertoire de fichiers désigné.

StopPdfGeneration() : Cette fonction permet d'interrompre la création des fichiers PDF. Afin de maintenir la sécurité des threads lors de la modification du drapeau _isRunning, il verrouille un objet privé appelé _lock.

GenerateDocument(string filePath) : Cette fonction contient le code nécessaire pour utiliser IronPDF afin de créer un document PDF. Une instance de ChromePdfRenderer est créée, le contenu HTML est chargé, converti en document PDF, et le PDF est enregistré dans le répertoire de fichiers désigné.

Main(string[] args) : La classe PdfGenerator est instanciée, la génération de PDF est démarrée et l'utilisateur est invité à arrêter la génération de PDF en appuyant sur n'importe quelle touche dans la méthode Main.

C# Volatile (Comment ça fonctionne pour les développeurs) : Figure 5

Cet exemple montre comment générer de manière fiable des documents PDF dans un environnement multithread en utilisant IronPDF et le mot-clé volatile. Nous contrôlons efficacement le processus de création de PDF en utilisant volatile pour assurer que les modifications du drapeau _isRunning sont immédiatement visibles à travers les threads. Nous utilisons également un verrou pour accéder et modifier le drapeau _isRunning tout en préservant la sécurité des threads de travail.

C# Volatile (Comment ça fonctionne pour les développeurs) : Figure 6

Conclusion

En résumé, l'incorporation du mot-clé volatile dans IronPDF fournit un moyen puissant pour garantir la sécurité des threads tout en créant des PDFs dans des programmes C# multithread. Nous assurons la prise de conscience en temps opportun et la synchronisation appropriée des changements entre les threads en désignant les drapeaux de contrôle partagés comme volatiles, fournissant un contrôle efficace sur le processus de production de PDF.

En veillant à ce que les modifications des drapeaux de contrôle soient instantanément diffusées à tous les threads, volatile est utilisé pour éviter les conflits et favoriser une coordination efficace des processus impliqués dans la création de PDF.

Les applications peuvent gérer efficacement plusieurs processus de génération de PDF en même temps sans courir le risque de corruption des données ou de situations de course, grâce à cette approche, qui améliore la scalabilité et la fiabilité de la génération de PDF dans des contextes concurrents.

Enfin, vous pouvez travailler efficacement avec des codes-barres, créer des PDF, faire de l'OCR, et connecter avec Excel en incluant IronPDF et explorez le plein potentiel des bibliothèques de Iron Software avec facilité. Iron Software combine sans effort les performances, la compatibilité et la facilité d'utilisation de sa suite polyvalente pour offrir des capacités applicatives améliorées et un développement plus efficace.

Les développeurs peuvent choisir le meilleur modèle avec confiance si des options de licence claires sont adaptées aux besoins spécifiques du projet. Ces avantages permettent aux développeurs de relever efficacement et en toute transparence une variété de défis.

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 $