मैं अपने जावा प्रोग्राम से OpenOffice एपीआई का उपयोग मेरे लिए दस्तावेज़ को संभालने के लिए। कभी कभी (एक बार हर 100k या तो कॉल) एक दस्तावेज़ के निपटाने विधि वापस नहीं करता है, सीपीयू लोड 100% पर रहता है लेकिन कुछ भी लगता है ऐसा करने के लिए।जावा: विधि वापस नहीं आती है। (XComponent.dispose
मैं कैसे इस स्थिति में सही ढंग से/कोड कार्य करना चाहिए?
मेरे वर्तमान दृष्टिकोण निपटाने दो सेकंड के लिए सफल होने के लिए प्रतीक्षा करने के लिए है। यदि यह मैं उपयुक्त एपीआई के माध्यम से OpenOffice समाप्त करने के लिए कोशिश नहीं करता अगर यह भी विफल रहता है (जैसा कि मैं उम्मीद करता हूं) तो मैं
XDesktop xDesk = (...) // achive desktop
xDesk.terminate();
Runtime.getRuntime().exec("pkill soffice"); // "taskkill /IM soffice" on windows
पर कॉल के साथ सोफिस प्रक्रिया को मारता हूं
और फिर फोन
disposeThread.stop();
धागा है कि शुरू में XComponent निपटाने की कोशिश करता है के लिए
। अब जावा एपीआई का कहना है कि Thread.stop()
नहीं किया जाना चाहिए (और वहाँ है कि करने के लिए वैध तर्क हैं) तो अगर कोई बेहतर समाधान है कि मैं क्या किया हैं मैं सोच रहा हूँ।
यह उन सवालों जहां यह कैसे शब्दों में है पर निर्भर करता है, यह प्रोग्रामर के लिए उपयुक्त हो सकता है में से एक है, लेकिन मुझे लगता है कि यह तकनीकी है और कार्यान्वयन काफी विशेष है कि यह शायद StackOverflow पर होना चाहिए। –
@maple_shaft मैंने इसके बारे में सोचा लेकिन इसके खिलाफ फैसला किया। अगर यह मेरी विशिष्ट समस्या को संभालने के बारे में एक सवाल था, तो मैंने इसे वहां रखा होगा, लेकिन मुझे पहले से ही मेरी समस्या के लिए एक समाधान समाधान मिल गया है और अब मैं पूछ रहा हूं कि एक विशिष्ट समाधान के बजाय बेहतर अवधारणा है या नहीं। लेकिन हाँ, इसके आधार पर यह कैसे कहा जाता है। –
@RobZ यह वास्तव में एक ओपन ऑफिस विशिष्ट प्रश्न नहीं है। यहां मेरा ओपन ऑफिस स्थिति सिर्फ एक उदाहरण है। –