Método Print() Trava em WPF e WinForms

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

Quando você chama o método Print() síncrono em um aplicativo WPF ou WinForms, o método é invocado mas nunca é concluído. A chamada trava indefinidamente, bloqueando o thread e congelando a UI mesmo quando o trabalho de impressão em si é 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 é o comportamento esperado. O Print() síncrono roda no thread de UI do aplicativo, onde o Dispatcher do WPF e o contexto de threading entram em conflito com o pipeline de impressão IronPrint e bloqueiam a chamada.

Solução

Chame a API assíncrona em vez da síncrona.

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() move a operação de impressão para fora do caminho bloqueante, então o trabalho é concluído e a UI permanece responsiva tanto em WPF quanto em WinForms.

Melhores práticas

  • Atualize o IronPrint: execute a versão mais recente para capturar a correção onde disponível.
  • Prefira APIs assíncronas: opte por PrintAsync() em WPF e WinForms para evitar impasses no thread de UI.
  • Nunca bloqueie no thread principal: evite .Result e .Wait() contra uma chamada assíncrona.
  • Descarregue I/O de longa duração: mantenha a impressão e outros trabalhos externos em tarefas de backend ou assíncronas.
Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Baixar 44,051 | Versão: 2026.7 recém-lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPrint
executar um exemplo Veja seu documento chegar à impressora.