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

This article was translated from English: Does it need improvement?
Translated
View the article in English

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
var printer = new IronPrint.Printer();
printer.Print("Test print"); // Hangs here
Dim printer As New IronPrint.Printer()
printer.Print("Test print") ' Hangs here
$vbLabelText   $csharpLabel

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");
var printer = new IronPrint.Printer();
await printer.PrintAsync("Test print");
Dim printer = New IronPrint.Printer()
Await printer.PrintAsync("Test print")
$vbLabelText   $csharpLabel

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
Escritor Técnico

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 ...

Leer más
¿Listo para empezar?
Nuget Descargas 44,051 | Versión: 2026.7 recién lanzado
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPrint
ejecuta una muestra observa cómo tu documento llega a la impresora.