Metoda Print() wiesza się w WPF i WinForms

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

Gdy wywolasz synchroniczna metode Print() w aplikacji WPF lub WinForms, metoda zostanie wywolana, ale nigdy nie zostanie zakonczona. Wywołanie wiesza się na zawsze, blokując wątek i zamrażając interfejs użytkownika, nawet gdy zadanie drukowania jest prawidłowe.

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

Jest to oczekiwane zachowanie. Synchroniczne Print() uruchamia sie na watku interfejsu uzytkownika aplikacji, gdzie Dispatcher WPF i kontekst watek kolidują z potokiem drukowania IronPrint i blokują wywołanie.

Rozwiązanie

Zamiast synchronizacyjnego wykorzystaj API asynchroniczne.

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() przenosi operacje drukowania poza sciezke blokujaca, dzieki czemu zadanie konczy sie, a interfejs uzytkownika pozostaje responsywny zarowno w WPF, jak i WinForms.

Najlepsze praktyki

  • Zaktualizuj IronPrint: użyj najnowszej wersji, aby podnieść poprawkę, gdzie jest dostępna.
  • Preferuj asynchroniczne interfejsy API: uzyj PrintAsync() w WPF i WinForms, aby uniknac zablokowania watku UI.
  • Nigdy nie blokuj glownego watku: unikaj .Result i .Wait() przeciwko asynchronicznemu wywolaniu.
  • Przekieruj długie działania I/O: utrzymuj drukowanie i środki zewnętrzne w zadaniach w tle lub asynchronicznych.
Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 44,051 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Chcesz szybkiego dowodu? PM > Install-Package IronPrint
uruchom próbkę obserwuj, jak twój dokument trafia do drukarki.