Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
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.
'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
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.
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
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.
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
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.
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
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.
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é
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
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.
IronPDF est facile à utiliser mais encore plus facile à installer. Il y a plusieurs façons de le faire :
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.
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.
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
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 :
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.
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!
9 produits de l'API .NET pour vos documents de bureau