IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

C# Thread Sleep Method (Comment ça fonctionne pour les développeurs)

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

Le multithreading est un aspect crucial du développement logiciel moderne, permettant aux développeurs d'exécuter plusieurs tâches simultanément, améliorant ainsi les performances et la réactivité. Cependant, gérer efficacement les threads nécessite une considération attentive de la synchronisation et de la coordination. Un outil essentiel dans l'arsenal d'un développeur C# pour gérer le minutage et la coordination des threads est la méthode Thread.Sleep().

Dans cet article, nous allons plonger dans les complexités de la méthode Thread.Sleep(), en explorant son but, son utilisation, ses écueils potentiels et ses alternatives. De plus, dans cet article, nous présentons la bibliothèque PDF IronPDF pour C#, qui facilite la génération programmatique de documents PDF.

Comprendre Thread.Sleep()

La méthode Thread.Sleep() fait partie de l'espace de noms System.Threading en C# et est utilisée pour bloquer l'exécution du thread actuel pendant un temps spécifié. Le thread en attente ou le thread bloqué arrête son exécution jusqu'à ce que le temps spécifié pour la pause soit écoulé. La méthode Sleep prend un seul argument, représentant l'intervalle de temps pendant lequel le thread doit rester inactif. L'argument peut être spécifié en millisecondes ou en tant qu'objet TimeSpan, offrant ainsi une flexibilité dans l'expression de la durée de pause souhaitée.

using System;
using System.Threading;

class Program
{
    static void Main()
    {
        // Using Thread.Sleep() with a specified number of milliseconds
        Thread.Sleep(1000); // Block for 1 second

        // Using Thread.Sleep() with TimeSpan
        TimeSpan sleepDuration = TimeSpan.FromSeconds(2);
        Thread.Sleep(sleepDuration); // Block for 2 seconds
    }
}

But de Thread.Sleep

Le but principal de l'utilisation de Thread.Sleep est d'introduire un délai ou une pause dans l'exécution d'un thread. Cela peut être bénéfique dans divers scénarios, tels que:

  1. Simulation d'un Comportement en Temps Réel: Dans les scénarios où l'application doit simuler un comportement en temps réel, l'introduction de délais peut aider à imiter les contraintes temporelles du système modélisé.
  2. Prévention de la Consommation Excessive de Ressources: Mettre en pause un thread pendant une courte durée peut être utile dans les scénarios où l'exécution constante est inutile, évitant ainsi une consommation de ressources inutile.
  3. Coordination des Threads: Lorsqu'on gère plusieurs threads, l'introduction de pauses peut aider à synchroniser leur exécution, évitant les conditions de concurrence et assurant un traitement ordonné.

Exemple du Monde Réel

Considérons un exemple réel où la méthode Thread.Sleep() peut être utilisée pour simuler un système de contrôle de feux de circulation. Dans ce scénario, nous allons créer une simple application console qui modélise le comportement d'un feu de signalisation avec des feux rouges, jaunes et verts.

using System;
using System.Threading;

public class TrafficLightSimulator
{
    static void Main()
    {
        Console.WriteLine("Traffic Light Simulator");
        while (true)
        {
            // Display the red light
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine($"Stop! Red light - {DateTime.Now:u}");
            Thread.Sleep(5000); // Pause for 5 seconds

            // Display the yellow light
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine($"Get ready! Yellow light - {DateTime.Now:u}");
            Thread.Sleep(2000); // Pause for 2 seconds

            // Display the green light
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine($"Go! Green light - {DateTime.Now:u}");
            Thread.Sleep(5000); // Pause for 5 seconds

            // Reset console color and clear screen
            Console.ResetColor();
            Console.Clear();
        }
    }
}

Dans l'exemple de programme ci-dessus, nous avons une simple simulation de feux de circulation à l'intérieur d'une boucle while. La méthode Thread.Sleep() est utilisée pour introduire des délais entre les transitions des signaux de feux de circulation. Voici comment fonctionne l'exemple:

  1. Le programme entre dans une boucle infinie pour simuler une opération continue.
  2. Le feu rouge est affiché pendant 5 secondes, représentant un signal d'arrêt.
  3. Après 5 secondes, le feu jaune est affiché pendant 2 secondes, indiquant une phase de préparation.
  4. Enfin, le feu vert est affiché pendant 5 secondes, permettant aux véhicules de passer.
  5. La couleur de la console est réinitialisée, et la boucle se répète.

Sortie

Méthode C# Thread Sleep (Comment cela fonctionne pour les développeurs) : Figure 1 - Sortie du programme : Afficher le simulateur de feux de circulation en utilisant la méthode Thread.Sleep().

Cet exemple démontre comment Thread.Sleep() peut être utilisé pour contrôler le chronométrage d'une simulation de feux de circulation, offrant une façon simple de modéliser le comportement d'un système réel. Gardez à l'esprit qu'il s'agit d'un exemple de base à des fins d'illustration, et dans une application plus complexe, vous pourriez envisager d'explorer des techniques de threading et de synchronisation plus avancées pour gérer l'entrée utilisateur, gérer plusieurs feux de signalisation et garantir un timing précis.

Utilisation du délai TimeSpan dans la méthode Sleep

Vous pouvez utiliser TimeSpan avec la méthode Thread.Sleep() pour spécifier la durée de la pause. Voici un exemple étendant la simulation de feux de circulation de l'exemple précédent, en utilisant TimeSpan :

using System;
using System.Threading;

class TrafficLightSimulator
{
    public static void Main()
    {
        Console.WriteLine("Traffic Light Simulator");
        while (true)
        {
            // Display the red light
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine($"Stop! Red light - {DateTime.Now:u}");
            Thread.Sleep(TimeSpan.FromSeconds(5)); // Pause for 5 seconds

            // Display the yellow light
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine($"Get ready! Yellow light - {DateTime.Now:u}");
            Thread.Sleep(TimeSpan.FromSeconds(2)); // Pause for 2 seconds

            // Display the green light
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine($"Go! Green light - {DateTime.Now:u}");
            Thread.Sleep(TimeSpan.FromSeconds(5)); // Pause for 5 seconds

            // Reset console color and clear screen
            Console.ResetColor();
            Console.Clear();
        }
    }
}

Dans cet exemple modifié, TimeSpan.FromSeconds() est utilisé pour créer un objet TimeSpan représentant la durée souhaitée de la pause. Cela rend le code plus lisible et expressif.

En utilisant la propriété TimeSpan dans la méthode Thread.Sleep(), vous pouvez spécifier directement la durée en secondes (ou toute autre unité prise en charge par TimeSpan), offrant une façon plus intuitive de travailler avec des intervalles de temps. Cela peut être particulièrement utile lors de la gestion de durées de pause plus longues ou plus complexes dans votre application.

Cas d'utilisation

  1. Simulation de Comportement en Temps Réel : Envisagez une application de simulation où vous devez modéliser le comportement d'un système en temps réel. En plaçant stratégiquement Thread.Sleep() dans votre code, vous pouvez imiter les délais temporels qui se produisent dans le système réel, améliorant ainsi la précision de votre simulation.
void SimulateRealTimeEvent()
{
    // Simulate some event
}

void SimulateNextEvent()
{
    // Simulate another event
}

// Simulating real-time behavior with Thread.Sleep()
SimulateRealTimeEvent();
Thread.Sleep(1000); // Pause for 1 second
SimulateNextEvent();
  1. Animations et Mises à Jour de l'UI : Dans les applications de développement graphique Web ou de développement de jeux, des animations fluides et des mises à jour de l'interface utilisateur sont cruciales. Thread.Sleep() peut être utilisé pour contrôler la fréquence d'images et s'assurer que les mises à jour se produisent à un rythme visuellement agréable.
void UpdateUIElement()
{
    // Code to update a UI element
}

void UpdateNextUIElement()
{
    // Code to update the next UI element
}

// Updating UI with controlled delays
UpdateUIElement();
Thread.Sleep(50); // Pause for 50 milliseconds
UpdateNextUIElement();
  1. Limitation des Appels vers des Services Externes : Lorsque vous interagissez avec des services externes ou des API, il est courant d'imposer des limites de taux ou des restrictions pour éviter des requêtes excessives. Thread.Sleep() peut être utilisé pour introduire des délais entre les appels de service consécutifs, en restant dans les limites de vitesse.
void CallExternalService()
{
    // Call to external service
}

void CallNextService()
{
    // Call to another external service
}

// Throttling service calls with Thread.Sleep()
CallExternalService();
Thread.Sleep(2000); // Pause for 2 seconds before the next call
CallNextService();

Avantages de Thread.Sleep()

  1. Synchronisation et coordination : Thread.Sleep() aide à synchroniser l'exécution des threads, prévenant les conditions de course et assurant un traitement ordonné lors de la gestion de plusieurs threads.
  2. Conservation des Ressources : Mettre temporairement en pause un thread peut être avantageux dans les scénarios où l'exécution constante n'est pas nécessaire, conservant les ressources du système.
  3. Simplicité et Lisibilité : La méthode fournit un moyen simple et lisible d'introduire des délais, rendant le code plus compréhensible, surtout pour les développeurs novices en concepts de multithreading.

Pièges Potentiels et Considérations

Bien que Thread.Sleep() soit une solution simple pour introduire des délais, il y a des écueils potentiels et des considérations dont les développeurs doivent être conscients :

  1. Blocage du thread : Lorsqu'un thread est mis en pause à l'aide de Thread.Sleep(), il est effectivement bloqué, et aucun autre travail ne peut être effectué pendant ce temps. Dans les scénarios où la réactivité est critique, bloquer le thread principal pendant de longues périodes peut entraîner une mauvaise expérience utilisateur.
  2. Inexactitude dans le chronométrage : La précision de la durée de la pause est soumise à la planification du système d'exploitation sous-jacent et peut ne pas être précise. Les développeurs doivent être prudents lorsqu'ils dépendent de Thread.Sleep() pour des exigences de chronométrage précises.
  3. Approches alternatives : Dans le développement moderne en C#, des alternatives comme la méthode Task.Delay() ou la programmation asynchrone utilisant async/await sont souvent préférées à Thread.Sleep(). Ces approches offrent une meilleure réactivité sans bloquer les threads.
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // Using Task.Delay() instead of Thread.Sleep()
        await Task.Delay(1000); // Pause for 1 second asynchronously
    }
}

Présentation d'IronPDF

IronPDF par Iron Software est une bibliothèque PDF pour C# servant à la fois de générateur et de lecteur de PDF. Cette section présente des fonctionnalités fondamentales. Pour plus de détails, consultez la documentation IronPDF.

Le point fort d'IronPDF est sa capacité de conversion de HTML en PDF, assurant la préservation de tous les layouts et styles. Il transforme le contenu web en PDF, utile pour les rapports, les factures et la documentation. Les fichiers HTML, les URL et les chaînes HTML peuvent être facilement convertis en PDF.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

Installation

Pour installer IronPDF en utilisant le Gestionnaire de Packages NuGet, utilisez soit la console du gestionnaire de packages NuGet, soit le gestionnaire de packages de Visual Studio.

Installez la bibliothèque IronPDF en utilisant la console du gestionnaire de packages NuGet avec l'une des commandes suivantes :

dotnet add package IronPdf

Installez la bibliothèque IronPDF en utilisant le Gestionnaire de Packages de Visual Studio :

C# Thread Sleep Method (How It Works For Developers): Figure 2 - Install IronPDF using NuGet Package Manager by searching "IronPDF" in the search bar of NuGet Package Manager.

using System;
using IronPdf;

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public void DisplayFullName()
    {
        if (string.IsNullOrEmpty(FirstName) || string.IsNullOrEmpty(LastName))
        {
            LogError($"Invalid name: {nameof(FirstName)} or {nameof(LastName)} is missing.");
        }
        else
        {
            Console.WriteLine($"Full Name: {FirstName} {LastName}");
        }
    }

    public void PrintPdf()
    {
        Console.WriteLine("Generating PDF using IronPDF.");

        // Content to print to PDF
        string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {FirstName}!</h1>
<p>First Name: {FirstName}</p>
<p>Last Name: {LastName}</p>
</body>
</html>";

        // Create a new PDF document
        var pdfDocument = new ChromePdfRenderer();
        pdfDocument.RenderHtmlAsPdf(content).SaveAs("person.pdf");
    }

    private void LogError(string errorMessage)
    {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine($"Error: {errorMessage}");
        Console.ResetColor();
    }
}

class Program
{
    public static void Main()
    {
        // Create an instance of the Person class
        Person person = new Person();

        // Attempt to display the full name
        person.DisplayFullName();

        // Set the properties
        person.FirstName = "John"; // Set First Name
        person.LastName = "Doe"; // Set Last Name

        // Display the full name again
        person.DisplayFullName();

        Console.WriteLine("Pause for 2 seconds and Print PDF");
        Thread.Sleep(2000); // Pause for 2 seconds

        // Print the full name to PDF
        person.PrintPdf();
    }
}

Dans ce programme, nous démontrons comment utiliser Thread.Sleep et IronPDF. Le code valide initialement les propriétés FirstName et LastName d'une personne. Puis imprime le nom complet de la personne sur la console. Puis attend 2 secondes en utilisant Thread.Sleep et imprime ensuite le FullName en PDF en utilisant la méthode PrintPdf() et la bibliothèque IronPDF.

Sortie

Méthode C# Thread Sleep (Comment cela fonctionne pour les développeurs) : Figure 3 - Sortie de la console : Affichage de l'utilisation de Thread.Sleep dans la génération de PDF en utilisant IronPDF.

PDF Généré

Méthode C# Thread Sleep (Comment cela fonctionne pour les développeurs) : Figure 4 - PDF créé.

Licence (Essai Gratuit Disponible)

Pour utiliser IronPDF, insérez cette clé dans le fichier appsettings.json.

"IronPdf.LicenseKey": "your license key"
JSON

Pour recevoir une licence d'essai, veuillez fournir votre email. Pour plus d'informations sur la licence d'IronPDF, veuillez consulter cette page de licence IronPDF.

Conclusion

La méthode Thread.Sleep() en C# sert d'outil fondamental pour gérer le chronométrage et la synchronisation des threads. Bien qu'elle soit une solution simple et efficace pour introduire des délais, les développeurs doivent être conscients de ses limitations et de son impact potentiel sur les performances de l'application. À mesure que le développement moderne en C# évolue, explorer des approches alternatives comme Task.Delay() et la programmation asynchrone devient essentiel pour écrire des applications multithread réactives et efficaces. En comprenant les nuances de la synchronisation des threads et en choisissant les outils appropriés, les développeurs peuvent créer des logiciels robustes et efficaces qui répondent aux exigences du traitement simultané dans un environnement dynamique.

De plus, nous avons observé la polyvalence des capacités d'IronPDF dans la génération de documents PDF et comment elle peut être utilisée avec la méthode Thread.Sleep. Pour plus d'exemples sur la façon d'utiliser IronPDF, veuillez consulter leurs exemples de code sur la page d'exemples IronPDF.

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 IronPDF
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 $