Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
Eventos en C#son una parte fundamental de la programación orientada a eventos. Permiten que los objetos se comuniquen y notifiquen a otros cuando ocurre algo de interés. En esta guía, exploraremos los eventos y cómo declararlos y utilizarlos. Desglosémoslo paso a paso para asegurar una comprensión clara. También exploraremosIronPDFpara operaciones de PDF en aplicaciones C#.
Los eventos en C# permiten la comunicación entre objetos. Cuando se genera un evento, otros objetos pueden responder a él. Los eventos dependen de los delegados, que actúan como punteros seguros para métodos. Un tipo de delegado de evento define la firma de los métodos que pueden manejar el evento público, asegurando la consistencia en la gestión de los datos del evento.
Para comprender completamente los eventos, veamos sus componentes principales:
La clase publisher es la fuente del evento. Es responsable de declarar el evento y activarlo cuando ocurre una acción o condición específica. Este proceso generalmente implica un método manejador de eventos para determinar cuándo ocurre el evento. El editor también utiliza un delegado de evento para definir la firma de los métodos que pueden manejar el evento. Por ejemplo, en una interfaz gráfica de usuario(GUI), un control de botón actúa como el publicador cuando genera un evento "Click".
La clase suscriptora escucha eventos y reacciona a ellos. Un suscriptor registra su interés en un evento adjuntando un método de manejo de eventos al mismo. Cuando el publicador desencadena el evento, el método controlador de eventos del suscriptor se ejecuta. Un solo evento puede tener múltiples suscriptores, cada uno respondiendo de manera diferente cuando ocurre el evento.
Los delegados son la base de los eventos en C#. Son punteros a métodos seguros para tipos y definen el contrato que todos los manejadores de eventos deben seguir. Los delegados aseguran que solo los métodos con una firma específica puedan manejar el evento, proporcionando un mecanismo de manejo de eventos consistente y sin errores.
Los manejadores de eventos son métodos en la clase suscriptora que se ejecutan cuando se desencadena un evento. Contienen la lógica para manejar el evento, como actualizar la interfaz de usuario, registrar datos o realizar cálculos. La firma de un controlador de eventos debe coincidir con el tipo de delegado asociado al evento. Además, otras clases pueden usar manejadores de eventos para reaccionar a eventos compartidos. Facilita la implementación de eventos de manera modular y reutilizable.
En muchos casos, los eventos necesitan transmitir información adicional a los suscriptores. Esto se logra utilizando clases de datos de eventos, que se derivan de la clase base EventArgs. Los datos del evento contienen detalles específicos sobre el evento, como un mensaje, estado u otra información relevante.
Los delegados definen la firma del método para los controladores de eventos. En este ejemplo, creamos un delegado para representar el manejador de eventos con dos parámetros: object sender y EventArgs e.
public delegate void MyEventHandler(object sender, EventArgs e);
public delegate void MyEventHandler(object sender, EventArgs e);
Public Delegate Sub MyEventHandler(ByVal sender As Object, ByVal e As EventArgs)
Los eventos se declaran utilizando la palabra clave event y se basan en el tipo de delegado. He aquí un ejemplo:
public class Publisher
{
public event MyEventHandler Notify; // Declare the event.
}
public class Publisher
{
public event MyEventHandler Notify; // Declare the event.
}
Public Class Publisher
Public Event Notify As MyEventHandler ' Declare the event.
End Class
El evento se desencadena llamando al delegado y pasando los parámetros necesarios.
public void TriggerEvent()
{
if (Notify != null) // Check if there are subscribers.
{
Notify(this, EventArgs.Empty); // Raise the event.
}
}
public void TriggerEvent()
{
if (Notify != null) // Check if there are subscribers.
{
Notify(this, EventArgs.Empty); // Raise the event.
}
}
Public Sub TriggerEvent()
If Notify IsNot Nothing Then ' Check if there are subscribers.
Notify(Me, EventArgs.Empty) ' Raise the event.
End If
End Sub
Los suscriptores registran controladores de eventos utilizando el operador +=:
Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber();
publisher.Notify += subscriber.OnNotify; // Subscribe to the event.
Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber();
publisher.Notify += subscriber.OnNotify; // Subscribe to the event.
Dim publisher As New Publisher()
Dim subscriber As New Subscriber()
publisher.Notify += subscriber.OnNotify ' Subscribe to the event.
Un controlador de eventos es un método en la clase suscriptora que coincide con la firma del delegado:
public void OnNotify(object sender, EventArgs e)
{
Console.WriteLine("Event received!");
}
public void OnNotify(object sender, EventArgs e)
{
Console.WriteLine("Event received!");
}
Public Sub OnNotify(ByVal sender As Object, ByVal e As EventArgs)
Console.WriteLine("Event received!")
End Sub
IronPDF, una biblioteca versátil para trabajar con PDFs en .NET, se integra perfectamente con aplicaciones C#. Combinado con eventos en C#, puede proporcionar una forma dinámica de manejar escenarios en tiempo real como actualizaciones de progreso, gestión de errores o notificaciones duranteGeneración de PDFo manipulación. Exploremos esta relación de manera atractiva. En C#, eventos son una forma de indicar que algo ha ocurrido. Permiten que una parte de su programa notifique a otras partes sobre ocurrencias específicas, como el procesamiento de un archivo, la finalización de una tarea o la aparición de un error.
IronPDF te permite generar, modificar y asegurar PDFs, y al integrarlo con eventos, puedes hacer que tu aplicación sea más interactiva. Por ejemplo:
Aquí tienes un ejemplo sencillo para demostrar el uso de IronPDF con eventos:
using IronPdf;
using System;
// Program class
class Program
{
// Define a custom event for progress updates
public static event Action<int> ProgressUpdated;
// public static void Main
public static void Main()
{
License.LicenseKey = "License-Key";
// Subscribe to the ProgressUpdated event
ProgressUpdated += DisplayProgress;
Console.WriteLine("Generating PDF...");
GeneratePdf();
}
static void GeneratePdf()
{
try
{
var Renderer = new ChromePdfRenderer();
for (int i = 0; i <= 100; i += 20)
{
// Simulate progress
System.Threading.Thread.Sleep(500);
ProgressUpdated?.Invoke(i); // Trigger event with progress value
}
// Generate a PDF
var PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF with Events!</h1>");
PdfDocument.SaveAs("IronPDF\example.pdf");
ProgressUpdated?.Invoke(100); // Final update
Console.WriteLine("PDF generated successfully!");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
static void DisplayProgress(int progress)
{
Console.WriteLine($"Progress: {progress}%");
}
}
using IronPdf;
using System;
// Program class
class Program
{
// Define a custom event for progress updates
public static event Action<int> ProgressUpdated;
// public static void Main
public static void Main()
{
License.LicenseKey = "License-Key";
// Subscribe to the ProgressUpdated event
ProgressUpdated += DisplayProgress;
Console.WriteLine("Generating PDF...");
GeneratePdf();
}
static void GeneratePdf()
{
try
{
var Renderer = new ChromePdfRenderer();
for (int i = 0; i <= 100; i += 20)
{
// Simulate progress
System.Threading.Thread.Sleep(500);
ProgressUpdated?.Invoke(i); // Trigger event with progress value
}
// Generate a PDF
var PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF with Events!</h1>");
PdfDocument.SaveAs("IronPDF\example.pdf");
ProgressUpdated?.Invoke(100); // Final update
Console.WriteLine("PDF generated successfully!");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
static void DisplayProgress(int progress)
{
Console.WriteLine($"Progress: {progress}%");
}
}
Imports IronPdf
Imports System
' Program class
Friend Class Program
' Define a custom event for progress updates
Public Shared Event ProgressUpdated As Action(Of Integer)
' public static void Main
Public Shared Sub Main()
License.LicenseKey = "License-Key"
' Subscribe to the ProgressUpdated event
AddHandler Me.ProgressUpdated, AddressOf DisplayProgress
Console.WriteLine("Generating PDF...")
GeneratePdf()
End Sub
Private Shared Sub GeneratePdf()
Try
Dim Renderer = New ChromePdfRenderer()
For i As Integer = 0 To 100 Step 20
' Simulate progress
System.Threading.Thread.Sleep(500)
RaiseEvent ProgressUpdated(i)
Next i
' Generate a PDF
Dim PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF with Events!</h1>")
PdfDocument.SaveAs("IronPDF\example.pdf")
RaiseEvent ProgressUpdated(100)
Console.WriteLine("PDF generated successfully!")
Catch ex As Exception
Console.WriteLine($"Error: {ex.Message}")
End Try
End Sub
Private Shared Sub DisplayProgress(ByVal progress As Integer)
Console.WriteLine($"Progress: {progress}%")
End Sub
End Class
Los eventos en C# combinados con IronPDF crean un sistema potente para la generación y gestión dinámica de PDFs. Los eventos proporcionan una manera limpia y eficiente de manejar operaciones de PDF de forma asíncrona, mientras que IronPDF ofrece una funcionalidad robusta para la creación, edición y manipulación de PDF en plataformas .NET. IronPDF ofrece unprueba gratuitapara probar todas las funciones sin limitaciones. Las licencias comerciales comienzan en $749 y ofrecen acceso a la suite completa de capacidades de generación y procesamiento de PDF.
10 productos API de .NET para sus documentos de oficina