Metoda Print() wiesza się w WPF i WinForms
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
.Resulti.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.