Metoda Print() wiesza się w WPF i WinForms

Curtis Chau
Curtis Chau
Updated: 29 czerwca 2026

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

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

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 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ęczników.

Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 49,171Wersja:2026.11właśnie wydany