Tôi sử dụng API OpenOffice từ Chương trình Java để xử lý Tài liệu cho tôi. Đôi khi (một lần mỗi 100k cuộc gọi) phương thức vứt bỏ của Tài liệu không trở lại, tải CPU vẫn ở mức 100% nhưng dường như không có gì xảy ra.Java: Phương thức không trả lại. (XComponent.dispose
Làm thế nào tôi nên hành động/code một cách chính xác trong tình huống này?
cách tiếp cận hiện tại của tôi là để chờ cho dispose để thành công trong hai giây. Nếu nó không tôi cố gắng chấm dứt OpenOffice thông qua API thích hợp Nếu điều đó cũng không thành công (như tôi mong đợi) thì tôi sẽ giết quá trình soffice với một cuộc gọi tới
XDesktop xDesk = (...) // achive desktop
xDesk.terminate();
Runtime.getRuntime().exec("pkill soffice"); // "taskkill /IM soffice" on windows
và sau đó gọi
disposeThread.stop();
đến chủ đề mà ban đầu cố gắng vứt bỏ những XComponent. Bây giờ các API Java nói rằng Thread.stop()
không nên được sử dụng (và có đối số hợp lệ cho điều đó) vì vậy tôi tự hỏi nếu có bất kỳ giải pháp tốt hơn mà những gì tôi đã làm.
Đây là một trong những câu hỏi tùy thuộc vào cách nó được diễn đạt, nó có thể thích hợp cho lập trình viên, nhưng tôi cảm thấy như thế này là kỹ thuật và thực hiện cụ thể đủ để có thể có trên StackOverflow. –
@maple_shaft Tôi nghĩ về điều đó nhưng quyết định chống lại nó. Nếu đó là câu hỏi về cách xử lý vấn đề cụ thể của tôi, tôi đã đặt nó ở đó, nhưng tôi đã tìm ra giải pháp làm việc cho vấn đề của mình và bây giờ tôi hỏi liệu có một khái niệm tốt hơn, chứ không phải là một giải pháp cụ thể. Nhưng vâng, nó tùy thuộc vào cách diễn đạt của nó. –
@RobZ Đây thực sự không phải là một câu hỏi cụ thể của Open Office. My Open Office Situation ở đây chỉ là một ví dụ. –