AIDE .NET

Attendez quelques secondes en C# (Comment ça marche pour les développeurs)

Publié août 15, 2024
Partager:

En programmation, il arrive parfois que vous souhaitiez suspendre ou retarder l'exécution de votre code pendant un certain temps. Cela vous permet de simuler différentes conditions temporelles, de prioriser certaines tâches, d'exécuter d'autres tâches sans bloquer le thread principal, et plus encore.

Dans ce guide, nous expliquerons comment attendre en C#, y compris les méthodes asynchrones, la commande sleep, la fonction sleep, et les applications console, et comment inclure une fonction d'attente dans notre outil de génération de PDF de pointe, IronPDF.

Comment attendre une tâche en C

La commande Sleep

'Sleep' est une commande simple mais puissante qui vous permet de suspendre l'exécution de votre tâche actuelle pendant une période de temps spécifique, indiquant essentiellement à votre programme d'attendre avant de passer à la tâche suivante. En C#, nous faisons cela en utilisant Thread.Sleep(int millisecondes) méthode, comme dans l'exemple de code suivant :

using System;
using System.Threading;
class Program
{
    public static void Main()
    {
        Console.WriteLine("Starting the program...");
        Thread.Sleep(3000); // Sleep for 3 seconds
        Console.WriteLine("...Program continues after 3 seconds");
    }
}
using System;
using System.Threading;
class Program
{
    public static void Main()
    {
        Console.WriteLine("Starting the program...");
        Thread.Sleep(3000); // Sleep for 3 seconds
        Console.WriteLine("...Program continues after 3 seconds");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Ici, le programme commence par imprimer « Démarrage du programme... » dans la console avant d'utiliser la méthode Thread.Sleep pour faire une pause de 3 000 millisecondes. (ou trois secondes). Après le délai spécifié, le programme reprend et imprime la sortie "...Le programme continue après 3 secondes" sur la console.

Méthode asynchrone et tâches

Les méthodes asynchrones en C# vous permettent d'exécuter plusieurs tâches simultanément sans interférer avec le thread principal. Cela signifie que pendant qu'une tâche est en attente, d'autres tâches peuvent continuer à s'exécuter. Pour implémenter une méthode asynchrone, vous devrez utiliser le mot-clé async et la classe Task.

using System;
using System.Threading.Tasks;
class Program
{
   public static async Task Main()
   {
       Console.WriteLine("Starting Task 1...");
       var task1 = DoSomethingAsync(3000);
       Console.WriteLine("Starting Task 2...");
       var task2 = DoSomethingAsync(2000);
       await Task.WhenAll(task1, task2);
       Console.WriteLine("Both tasks completed.");
   }
   private static async Task DoSomethingAsync(int milliseconds)
   {
       await Task.Delay(milliseconds);
       Console.WriteLine($"Task completed after {milliseconds} milliseconds");
   }
}
using System;
using System.Threading.Tasks;
class Program
{
   public static async Task Main()
   {
       Console.WriteLine("Starting Task 1...");
       var task1 = DoSomethingAsync(3000);
       Console.WriteLine("Starting Task 2...");
       var task2 = DoSomethingAsync(2000);
       await Task.WhenAll(task1, task2);
       Console.WriteLine("Both tasks completed.");
   }
   private static async Task DoSomethingAsync(int milliseconds)
   {
       await Task.Delay(milliseconds);
       Console.WriteLine($"Task completed after {milliseconds} milliseconds");
   }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Dans cet exemple de code, nous avons deux tâches s'exécutant en même temps. La méthode DoSomethingAsync prend un paramètre int qui représente le temps en millisecondes durant lequel la tâche doit être retardée. (Comme vous pouvez le voir dans les '3000' et '2000' dans le code, les deux sont des valeurs de délai d'attente.). La méthode Task.Delay est similaire à Thread.Sleep.() méthode, mais elle fonctionne avec des tâches asynchrones et ne bloque pas le thread principal.

Utilisation des minuteries pour planifier vos tâches

Les minuteries en C# vous permettent d'exécuter une tâche spécifique après un intervalle spécifié. Vous pouvez créer un minuteur en utilisant la classe System.Timers.Timer. Voici un exemple d'utilisation d'un minuteur dans une application console :

using System;
using System.Timers;
class Program
{
   public static void Main()
   {
       var timer = new Timer(1000); // Create a timer with a 1-second interval
       timer.Elapsed += OnTimerElapsed;
       timer.AutoReset = true;
       timer.Enabled = true;

       Console.WriteLine("Press any key to exit...");
       Console.ReadKey();
   }
   private static void OnTimerElapsed(object sender, ElapsedEventArgs e)
   {
       Console.WriteLine("Timer ticked at " + e.SignalTime);
   }
}
using System;
using System.Timers;
class Program
{
   public static void Main()
   {
       var timer = new Timer(1000); // Create a timer with a 1-second interval
       timer.Elapsed += OnTimerElapsed;
       timer.AutoReset = true;
       timer.Enabled = true;

       Console.WriteLine("Press any key to exit...");
       Console.ReadKey();
   }
   private static void OnTimerElapsed(object sender, ElapsedEventArgs e)
   {
       Console.WriteLine("Timer ticked at " + e.SignalTime);
   }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Dans l'exemple ci-dessus, nous créons une minuterie avec un intervalle de 1 seconde. La méthode OnTimerElapsed est exécutée à chaque fois que le minuteur se déclenche. Nous définissons la propriété AutoReset sur true pour que le minuteur redémarre automatiquement après chaque tic. La propriété Enabled est définie sur true pour démarrer le minuteur.

Lorsque vous exécutez cette application console, vous verrez la minuterie faire un tic-tac toutes les secondes et imprimer l'heure du tic-tac sur la console. Le programme continuera à fonctionner jusqu'à ce que vous appuyiez sur n'importe quelle touche pour le quitter.

Création de fonctions d'attente personnalisées

Parfois, vous pouvez avoir besoin d'une fonction d'attente personnalisée pour répondre à des exigences spécifiques dans votre code. Par exemple, vous pourriez vouloir créer une fonction d'attente qui ne bloque que la tâche en cours, plutôt que l'ensemble du thread. Vous pouvez réaliser cela en utilisant des délégués asynchrones.

Voici un exemple de fonction d'attente personnalisée :

using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
   public static async Task Main()
   {
       Console.WriteLine("Starting Task 1...");
       await CustomWaitAsync(3000);
       Console.WriteLine("Task 1 completed.");

       Console.WriteLine("Starting Task 2...");
       await CustomWaitAsync(2000);
       Console.WriteLine("Task 2 completed.");
   }
   private static async Task CustomWaitAsync(int milliseconds)
   {
       await Task.Run(() => Thread.Sleep(milliseconds));
   }
}
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
   public static async Task Main()
   {
       Console.WriteLine("Starting Task 1...");
       await CustomWaitAsync(3000);
       Console.WriteLine("Task 1 completed.");

       Console.WriteLine("Starting Task 2...");
       await CustomWaitAsync(2000);
       Console.WriteLine("Task 2 completed.");
   }
   private static async Task CustomWaitAsync(int milliseconds)
   {
       await Task.Run(() => Thread.Sleep(milliseconds));
   }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Ici, la méthode CustomWaitAsync accepte un paramètre int représentant le temps de retard en millisecondes. La méthode utilise un délégué asynchrone pour exécuter la fonction Thread.Sleep au sein d'une nouvelle tâche, garantissant que le statut de la tâche actuelle est bloqué en attendant, mais pas le thread principal.

Choisir la bonne stratégie d'attente

Maintenant que nous avons couvert l'instruction d'attente C#, la commande sleep, les méthodes async, les minuteries et les fonctions d'attente personnalisées, il est essentiel de savoir quand utiliser chaque technique. Voici un bref résumé

  • Utilisez la fonction Thread.Sleep lorsque vous avez besoin d'un moyen simple pour suspendre l'exécution de votre code pendant une durée spécifiée.
  • Utilisez des méthodes asynchrones et des tâches lorsque vous avez besoin d’exécuter plusieurs tâches simultanément sans bloquer le thread principal
  • Utilisez des minuteurs lorsque vous devez exécuter une tâche spécifique à un intervalle spécifié
  • Créez des fonctions d'attente personnalisées lorsque vous avez des exigences spécifiques qui ne sont pas satisfaites par les méthodes intégrées.

Génération de PDFs avec IronPDF en utilisant la fonction d'attente

IronPDF est une bibliothèque PDF .NET légère conçue spécialement pour les développeurs web. Cela rend la lecture, l'écriture et la manipulation des fichiers PDF très facile, capable de convertir toutes sortes de types de fichiers en contenu PDF, et vous pouvez l'utiliser dans vos projets .NET pour à la fois le bureau et le web. Le meilleur - c'est gratuit à essayer dans un environnement de développement. Plongeons-nous dedans.

IronPDF fonctionne avec les fichiers HTML, les URL, les chaînes brutes et les fichiers ZIP. Voici un aperçu rapide du code :

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");
   }
}
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");
   }
}
Imports IronPdf
Friend Class Program
   Shared Sub Main(ByVal args() As String)
	   Dim renderer = New ChromePdfRenderer()
	   ' 1. Convert HTML String to PDF
	   Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
	   Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
	   pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
	   ' 2. Convert HTML File to PDF
	   Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
	   Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
	   pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
	   ' 3. Convert URL to PDF
	   Dim url = "http://ironpdf.com" ' Specify the URL
	   Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
	   pdfFromUrl.SaveAs("URLToPDF.pdf")
   End Sub
End Class
VB   C#

IronPDF peut s'intégrer parfaitement à vos stratégies d'attente pour générer des documents PDF après l'exécution des tâches, à des intervalles planifiés ou lorsque le fil d'exécution reprend.

Par exemple, vous pouvez utiliser IronPDF en combinaison avec une méthode asynchrone pour générer un rapport PDF après avoir récupéré des données d'une base de données sans bloquer le thread principal. De même, vous pouvez utiliser une classe de minuterie pour créer une capture PDF des données de votre application à intervalles réguliers.

Installer la bibliothèque IronPDF

IronPDF est facile à utiliser mais encore plus facile à installer. Il y a plusieurs façons de le faire :

Méthode 1 : Console du gestionnaire de paquets NuGet

Dans Visual Studio, dans l'Explorateur de solutions, faites un clic droit sur Références, puis cliquez sur Gérer les packages NuGet. Cliquez sur parcourir et cherchez 'IronPDF', puis installez la dernière version. Si vous voyez ceci, cela fonctionne :

Vous pouvez également aller dans Outils -> Gestionnaire de packages NuGet -> Console du gestionnaire de packages, et entrer la ligne suivante dans l'onglet Gestionnaire de packages :

Install-Package IronPdf

Enfin, vous pouvez obtenir IronPDF directement depuis Site officiel de NuGet. Sélectionnez l'option Download Package dans le menu à droite de la page, double-cliquez sur votre téléchargement pour l'installer automatiquement, et rechargez la Solution pour commencer à l'utiliser dans votre projet.

Ça n'a pas fonctionné ? Vous pouvez trouver de l'aide spécifique à la plateforme sur notre page d'installation avancée de NuGet.

Méthode 2 : Utilisation d'un fichier DLL

Vous pouvez également obtenir le fichier DLL d'IronPDF directement auprès de nous et l'ajouter manuellement à Visual Studio. Pour des instructions complètes et des liens vers les packages DLL pour Windows, MacOS et Linux, consultez notre dédié page d'installation.

Comment utiliser C# Wait dans IronPDF

Vous pouvez voir comment inclure une fonction d'attente dans IronPDF dans l'exemple suivant :

using System;
using System.Threading.Tasks;
using System.Diagnostics;
using IronPdf;
class Program
{
   public static async Task Main()
   {
       Console.WriteLine("Starting the PDF generation task...");
   Stopwatch stopwatch = Stopwatch.StartNew();
       await Task.Delay(3000); // Wait for 3 seconds
       GeneratePdf();
       Console.WriteLine("PDF generated successfully.");
   }
   private static void GeneratePdf()
   {
       var htmlToPdf = new ChromePdfRenderer();
       var pdf = htmlToPdf.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
       pdf.SaveAs("HelloWorld.pdf");
   }
}
using System;
using System.Threading.Tasks;
using System.Diagnostics;
using IronPdf;
class Program
{
   public static async Task Main()
   {
       Console.WriteLine("Starting the PDF generation task...");
   Stopwatch stopwatch = Stopwatch.StartNew();
       await Task.Delay(3000); // Wait for 3 seconds
       GeneratePdf();
       Console.WriteLine("PDF generated successfully.");
   }
   private static void GeneratePdf()
   {
       var htmlToPdf = new ChromePdfRenderer();
       var pdf = htmlToPdf.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
       pdf.SaveAs("HelloWorld.pdf");
   }
}
Imports System
Imports System.Threading.Tasks
Imports System.Diagnostics
Imports IronPdf
Friend Class Program
   Public Shared Async Function Main() As Task
	   Console.WriteLine("Starting the PDF generation task...")
   Dim stopwatch As Stopwatch = System.Diagnostics.Stopwatch.StartNew()
	   Await Task.Delay(3000) ' Wait for 3 seconds
	   GeneratePdf()
	   Console.WriteLine("PDF generated successfully.")
   End Function
   Private Shared Sub GeneratePdf()
	   Dim htmlToPdf = New ChromePdfRenderer()
	   Dim pdf = htmlToPdf.RenderHtmlAsPdf("<h1>Hello, World!</h1>")
	   pdf.SaveAs("HelloWorld.pdf")
   End Sub
End Class
VB   C#

Ici, nous utilisons la méthode Task.Delay pour attendre 3 secondes avant de générer un PDF. Le PDF est ensuite enregistré sous le nom "HelloWorld.pdf" dans le répertoire de travail de l'application une fois l'attente terminée.

Et voici le produit final :

Utilisation de la méthode Wait avec IronPDF

Dans les applications C#, vous pouvez utiliser efficacement la fonction de sommeil pour gérer le thread actuel et le temps CPU tout en effectuant des opérations telles que le chargement de données dans un DataTable ou la génération de rapports PDF en utilisant IronPDF.

Conclusion

Cela peut sembler contre-intuitif au premier abord, mais l'implémentation d'instructions d'attente dans votre code est une compétence indispensable pour créer des applications efficaces. Et en incorporant IronPDF, vous pouvez amener vos applications au niveau supérieur en créant des documents PDF à la volée, sans bloquer le thread principal.

Prêt à mettre la main sur IronPDF ? Vous pouvez commencer avec notre essai gratuit de 30 jours. C'est également totalement gratuit à utiliser à des fins de développement, ce qui vous permet de vraiment voir de quoi il est fait. Et si vous aimez ce que vous voyez, IronPDF commence à partir de $749. Pour des économies encore plus importantes, consultez le Iron Suite où vous pouvez obtenir les neuf outils Iron Software pour le prix de deux. Bon codage!

< PRÉCÉDENT
Razor C# (Comment ça marche pour les développeurs)
SUIVANT >
For Loop C# (Comment ça marche pour les développeurs)