El método Print() se cuelga en WPF y WinForms

Curtis Chau
Curtis Chau
Updated: 29 de junio de 2026

Cuando llamas al método sincrónico Print() en una aplicación WPF o WinForms, el método se invoca pero nunca se completa. La llamada se cuelga indefinidamente, bloqueando el hilo y congelando el UI incluso cuando el trabajo de impresión en sí es válido.

var printer = new IronPrint.Printer();
printer.Print("Test print"); // Hangs here

Este comportamiento es el esperado. El sincrónico Print() se ejecuta en el hilo de la interfaz de usuario de la aplicación, donde el Dispatcher de WPF y el contexto de subprocesos entran en conflicto con la canalización de impresión de IronPrint y bloquean la llamada.

Solución

Llama a la API asíncrona en lugar de a la sincrónica.

var printer = new IronPrint.Printer();
await printer.PrintAsync("Test print");

PrintAsync() mueve la operación de impresión fuera del camino bloqueante, por lo que el trabajo se completa y la interfaz de usuario se mantiene receptiva tanto en WPF como en WinForms.

Bestes prácticas

  • Actualizar IronPrint: ejecuta la última versión para recoger la solución donde esté disponible.
  • Prefiera las API asíncronas: utilice PrintAsync() en WPF y WinForms para evitar bloqueos de hilos de interfaz de usuario.
  • Nunca bloquee en el hilo principal: evite .Result y .Wait() contra una llamada asíncrona.
  • Descargar tareas de I/O prolongadas: mantén la impresión y otros trabajos externos en tareas de fondo o asíncronas.

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien estructurados y visualmente atractivos.

Leer más

¿Listo para empezar?

Nuget Downloads 49,171Versión:2026.11recién lanzado