Druckmethode hängt in WPF und WinForms

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

Wenn Sie die synchrone Print()-Methode in einer WPF- oder WinForms-Anwendung aufrufen, wird die Methode aufgerufen, aber nie abgeschlossen. Der Aufruf hängt auf unbestimmte Zeit und blockiert den Thread und friert die Benutzeroberfläche ein, selbst wenn der Druckauftrag selbst gültig ist.

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

Dies ist ein erwartbares Verhalten. Die synchrone Print() läuft im UI-Thread der Anwendung, wo der WPF-Dispatcher und der Threading-Kontext mit der Druckpipeline von IronPrint in Konflikt geraten und den Aufruf blockieren.

Lösung

Rufen Sie die asynchrone API anstelle der synchronen auf.

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() verlagert den Druckvorgang von dem blockierenden Pfad, sodass der Auftrag abgeschlossen wird und die UI in WPF und WinForms reaktionsfähig bleibt.

Bewährte Verfahren

  • Aktualisieren Sie IronPrint: Führen Sie die neueste Version aus, um das verfügbare Fix zu übernehmen.
  • Bevorzugen Sie asynchrone APIs: Verwenden Sie PrintAsync() in WPF und WinForms, um UI-Thread-Deadlocks zu vermeiden.
  • Blockieren Sie niemals den Haupt-Thread: Vermeiden Sie .Result und .Wait() bei einem asynchronen Aufruf.
  • Verlagern Sie langes I/O: Halten Sie Druck- und andere externe Arbeiten auf Hintergrund- oder asynchronen Aufgaben.
Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 44,051 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronPrint
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihr Dokument auf dem Drucker ausgegeben wird.