2012-01-12 12 views
7

OpenOffice API'sini, benim için Belgeleri işlemek için Java Programımdan kullanıyorum Bazen bir belgenin atma yöntemi geri dönmez, CPU yükü% 100 kalır, ancak hiçbir şey görünmez. gerçekleşmesi.Java: Yöntem geri dönmüyor. (XComponent.dispose

nasıl bu durumda doğru/kod hareket etmelidir?

Benim şu anki yaklaşımı iki saniye başarılı olması imhası için beklemektir. ben uygun API üzerinden OpenOffice sonlandırmak için deneyin etmezse Eğer bu da başarısız olursa (beklediğim gibi), o zaman soffice sürecini

ve sonra başlangıçta XComponent elden çalışır Konuya

disposeThread.stop(); 

diyoruz. Artık Java API'sı Thread.stop()'un kullanılmaması gerektiğini söylüyor (ve bunun için geçerli argümanlar var), bu yüzden yaptığımın daha iyi bir çözümü olup olmadığını merak ediyorum.

+0

Bu, nasıl ifade edildiğine bağlı olarak, Programcılar için uygun olabilir, ancak bu muhtemelen StackOverflow üzerinde olması gerektiği kadar teknik ve uygulama olduğunu hissediyorum gibi sorulardan biridir. –

+0

@maple_shaft Bunu düşündüm ama buna karşı karar verdim. Sorunumun nasıl çözüleceğine dair bir soru olsaydı, onu oraya koyardım, ama problemim için zaten bir çalışma çözümü buldum ve şimdi belirli bir çözümden ziyade daha iyi bir kavram olup olmadığını soruyorum. Ama evet, onun nasıl ifade edildiğine bağlı. –

+0

@RobZ Bu gerçekten bir Office'e özel bir soru değildir. Açık Ofis Durumum burada sadece bir örnektir. –

cevap

4

Garip, nadir bir böceğin etrafında çalışmak için bazı yeni roman yolları var gibi görünüyor.

Gördüğüm yol, Java API'sı Thread.stop()'un kullanılmaması gerektiğini belirtirken, aynı şekilde OpenOffice Document.dispose()'un her zaman geri dönmesi gerektiği söylenebilir. Nadir görülen bir olay olsa bile, bitmek ve bir değer vermek değil, geçersiz bir durum nedeniyle bir istisna atmak gibi, hala bir hatadır. Sadece sonsuz bir döngüde çalışır, bu yüzden bir hatadır.

Bir geçici çözüm olarak, uygulamanızın askıda kalmasını engellemeniz gerekiyorsa, Thread.stop()'u kullanırken sorun görmüyorum. Neden kullanılmaması gerektiğiyle ilgili feragatname, kötü bir şekilde geliştirilmiş çok iş parçacıklı uygulamaları önlemek için daha fazla suistimal edileceğinden daha fazla amaçlanmaktadır.

+1

Cevabınız için teşekkür ederim, bir aydan fazla bir süredir daha iyi bir fikirle gelip gelemeyeceğini görmek için bekledim, ama maalesef ... Şu anki çözümüm OOo'yu sonlandırmak için sistem komutlarını (ps ve kill) kullanmaktır. durum çünkü tamamen askıda kalıyor. Orada büyük bir karışıklık gibi görünüyor: (Her neyse, cevabınızı doğru olarak işaretleyeceğim, tekrar teşekkürler. –

İlgili konular