Yazdır() Metodu WPF ve WinForms'da Asılı Kalıyor
Bir WPF veya WinForms uygulamasında senkron Print() yöntemini çağırdığınızda, yöntem çağırılır ancak asla tamamlanmaz. Çağrı süresiz olarak asılır, ipliği bloke eder ve baskı işi geçerli olsa bile UI'yi dondurur.
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
Bu beklenen bir davranıştır. Senkron Print(), uygulamanın UI iş parçacığında çalışır; burada WPF Dispatcher ve iş parçacığı bağlamı IronPrint'in baskı hattıyla çatışır ve çağrıyı engeller.
Çözüm
Eş zamanlı olan yerine async API'yi çağırın.
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() baskı işlemini engelleyici yolun dışına taşır, böylece iş tamamlanır ve hem WPF hem de WinForms'ta kullanıcı arayüzü duyarlı kalır.
En İyi Uygulamalar
- IronPrint'i Güncelleyin: varsa düzeltme ekini almak için en son sürümü çalıştırın.
- Asenkron API'leri tercih edin: UI iş parçacığı kilitlenmelerinden kaçınmak için WPF ve WinForms'ta
PrintAsync()kullanın. - Ana iş parçacığını asla engellemeyin: asenkron bir çağrıya karşı
.Resultve.Wait()kullanmaktan kaçının. - Uzun süreli G/Ç'ü Devre Dışı Bırakın: arka plan veya eşzamansız görevlerde baskı ve diğer dış çalışmaları tutun.

