Print() Method Hangs in WPF and WinForms
When you call the synchronous Print() method in a WPF or WinForms application, the method is invoked but never completes. The call hangs indefinitely, blocking the thread and freezing the UI even when the print job itself is valid.
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
This is expected behavior. The synchronous Print() runs on the application's UI thread, where the WPF Dispatcher and threading context conflict with IronPrint's print pipeline and block the call.
Solution
Call the asynchronous API instead of the synchronous one.
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")
PrintAsync() moves the print operation off the blocking path, so the job completes and the UI stays responsive in both WPF and WinForms.
Best Practices
- Update IronPrint: run the latest version to pick up the fix where available.
- Prefer async APIs: reach for
PrintAsync()in WPF and WinForms to avoid UI thread deadlocks. - Never block on the main thread: avoid
.Resultand.Wait()against an async call. - Offload long-running I/O: keep printing and other external work on background or async tasks.

