Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
En programación, a veces querrás pausar o retrasar la ejecución de tu código durante cierto tiempo. Esto es para que pueda simular diferentes condiciones de tiempo, para dar prioridad a ciertas tareas, para ejecutar otras tareas sin bloquear el hilo principal, y mucho más.
En esta guía, explicaremos cómo esperar en C#, incluidos los métodos asíncronos, el comando sleep, la función sleep y las aplicaciones de consola, y cómo incluir una función wait en nuestra herramienta de generación de PDF líder del sector, IronPDF.
sleep" es un comando sencillo pero potente que permite pausar la ejecución de la tarea actual durante un periodo de tiempo determinado, indicando al programa que espere antes de pasar a la siguiente tarea. En C#, lo hacemos utilizando Thread.Sleep(int milisegundos) como en el siguiente ejemplo de código:
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
Aquí, el programa comienza imprimiendo "Starting the program..." en la consola antes de utilizar el método Thread.Sleep para hacer una pausa de 3.000 milisegundos (o tres segundos). Tras el retardo especificado, el programa se reanuda e imprime la salida "...El programa continúa después de 3 segundos" en la consola.
Los métodos asíncronos en C# le permiten ejecutar múltiples tareas simultáneamente sin interferir con el hilo principal. Esto significa que mientras una tarea espera, otras pueden seguir ejecutándose. Para implementar un método async, necesitarás utilizar la palabra clave async y la clase 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
En este ejemplo de código, tenemos dos tareas ejecutándose al mismo tiempo. El método DoSomethingAsync toma un parámetro int que representa el tiempo en milisegundos que la tarea debe retrasarse (como se puede ver en el '3000' y '2000' en el código, tanto un valor de tiempo de espera). El método Task.Delay es similar al método Thread.Sleep() pero funciona con tareas asíncronas y no bloquea el hilo principal.
Los temporizadores en C# le permiten ejecutar una tarea específica después de un intervalo especificado. Puedes crear un temporizador utilizando la clase System.Timers.Timer. He aquí un ejemplo de cómo utilizar un temporizador en una aplicación de consola:
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
En el ejemplo anterior, creamos un temporizador con un intervalo de 1 segundo. El método OnTimerElapsed se ejecuta cada vez que el temporizador hace tictac. Establecemos la propiedad AutoReset a true para que el temporizador se reinicie automáticamente después de cada tick. La propiedad Enabled se establece en true para iniciar el temporizador.
Cuando ejecutes esta aplicación de consola, verás que el temporizador hace tictac cada segundo, imprimiendo el tiempo de tictac en la consola. El programa seguirá ejecutándose hasta que pulse cualquier tecla para salir.
A veces, es posible que necesite una función de espera personalizada para satisfacer requisitos específicos de su código. Por ejemplo, es posible que desee crear una función de espera que sólo bloquee la tarea actual, en lugar de todo el hilo. Puedes conseguirlo utilizando delegados asíncronos.
He aquí un ejemplo de función de espera personalizada:
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
Aquí, el método CustomWaitAsync acepta un parámetro int que representa el tiempo de retardo en milisegundos. El método utiliza un delegado asíncrono para ejecutar la función Thread.Sleep dentro de una nueva tarea, asegurando que el estado actual de la tarea se bloquea mientras espera, pero no el hilo principal.
Ahora que hemos cubierto la sentencia wait de C#, el comando sleep, los métodos async, los temporizadores y las funciones wait personalizadas, es esencial saber cuándo usar cada técnica. He aquí un breve resumen
IronPDF es una ligera biblioteca PDF .NET diseñada específicamente pensando en los desarrolladores web. Hace que leer, escribir y manipular archivos PDF sea pan comido, ya que es capaz de convertir todo tipo de archivos en contenido PDF, y puede utilizarlo en sus proyectos .NET tanto para escritorio como para web. Y lo mejor es que se puede probar gratis en un entorno de desarrollo. Vamos a sumergirnos.
IronPDF funciona con archivos HTML, URL, cadenas sin procesar y archivos ZIP. He aquí un breve resumen del código:
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 puede integrarse perfectamente con sus estrategias de espera para generar documentos PDF después de ejecutar tareas, durante intervalos programados o cuando el subproceso actual reanuda la ejecución.
Por ejemplo, puede utilizar IronPDF en combinación con un método asíncrono para generar un informe PDF después de obtener datos de una base de datos sin bloquear el subproceso principal. Del mismo modo, puede utilizar una clase de temporizador para crear una instantánea en PDF de los datos de su aplicación a intervalos regulares.
IronPDF es fácil de usar, pero aún más fácil de instalar. Hay un par de maneras de hacerlo:
En Visual Studio, en el Explorador de soluciones, haga clic con el botón derecho en Referencias y, a continuación, haga clic en Administrar paquetes NuGet. Pulsa Examinar y busca 'IronPDF, e instala la última versión. Si ves esto, está funcionando:
También puede ir a Tools -> NuGet Package Manager -> Packet Manager Console, e introducir la siguiente línea en la pestaña Package Manager:
Instalar el paquete IronPDF
Por último, puede obtener IronPDF directamente de Sitio web oficial de NuGet. Seleccione la opción Descargar paquete del menú de la derecha de la página, haga doble clic en su descarga para instalarla automáticamente y vuelva a cargar la Solución para empezar a utilizarla en su proyecto.
¿No funcionó? Encontrará ayuda específica para cada plataforma en nuestra página de instalación avanzada de NuGet.
También puede obtener el archivo DLL IronPDF directamente de nosotros y añadirlo a Visual Studio manualmente. Para obtener instrucciones completas y enlaces a los paquetes DLL para Windows, MacOS y Linux, consulte nuestra página dedicada página de instalación.
Puede ver cómo incluir una función de espera en IronPDF en el siguiente ejemplo:
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
Aquí, utilizamos el método Task.Delay para esperar 3 segundos antes de generar un PDF. El PDF se guarda como "HelloWorld.pdf" en el directorio de trabajo de la aplicación al finalizar la espera.
Y aquí está el producto final:
En las aplicaciones de C#, puede utilizar eficazmente la función de suspensión para gestionar el subproceso actual y el tiempo de CPU mientras realiza operaciones como cargar datos en una DataTable o generar informes PDF utilizando IronPDF.
Puede parecer contraintuitivo al principio, pero implementar sentencias wait en tu código es una habilidad imprescindible a la hora de construir aplicaciones eficientes. Y al incorporar IronPDF, puede llevar sus aplicaciones al siguiente nivel creando documentos PDF sobre la marcha, sin bloquear el hilo principal.
¿Está listo para utilizar IronPDF? Puede empezar con nuestro 30 días de prueba gratuita. Además, su uso para fines de desarrollo es totalmente gratuito, por lo que podrás ver de qué está hecho. Y si le gusta lo que ve, IronPDF le ofrece desde tan sólo $749. Para ahorrar aún más, consulte el Iron Suite donde puede conseguir las nueve herramientas de Iron Software por el precio de dos. Feliz codificación!
9 productos API .NET para sus documentos de oficina