Método Print() Trava em WPF e WinForms

Curtis Chau
Curtis Chau
Updated: 29 de junho de 2026

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

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");

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 é 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 bem estruturados e visualmente atraentes.

Leia mais

Pronto para começar?

Nuget Downloads 49,171Versão:2026.11recém-lançado