To comment on the following update, log in, then open the issue: http://www.openoffice.org/issues/show_bug.cgi?id=85875 Issue #|85875 Summary|Hang on Disposing XComponent/XDesktop Component|api Version|OOo 2.3.0 RC1 Platform|PC URL| OS/Version|Windows 2003 Status|UNCONFIRMED Status whiteboard| Keywords| Resolution| Issue type|DEFECT Priority|P1 Subcomponent|code Assigned to|jsc Reported by|noviceprogram
------- Additional comments from [EMAIL PROTECTED] Tue Feb 5 09:10:03 +0000 2008 ------- Hello, I am using OO to convert PPTs/ODPs to multiple PDFs(generating a pdf per slide of PPT). I use C# as my programming language. I use this utility from a windows service to convert PPTs to PDFs and I always make sure that OO is not called from multiple threads. I have written the following code to do so. but when ever i try to dispose/terminate some thing(such as xcomponent/xdesktop object) OO hangs. Please note that this code is working on Windows XP and problem occurs only to Win2K3. I have looked into bug 79541 as well but this does not help either because the hang seems like OS specific now. I have tried using XCloseable's close as well but it also hangs. The code follows: XComponent xComponent = null; XComponentLoader xComponentLoader = null; try { // Get the component Loader for the OO. xComponentLoader = this.GetComponentLoader(); PropertyValue[] loadProps = new PropertyValue[1]; PropertyValue asHidden = new PropertyValue(); string pptPath = “file:///C:/Test.ppt”; asHidden.Name = "Hidden"; asHidden.Value = new uno.Any(true); loadProps[0] = asHidden; xComponent = xComponentLoader.loadComponentFromURL(pptPath, "_blank", 0, loadProps); unoidl.com.sun.star.drawing.XDrawPagesSupplier xDrawPagesSupplier = (unoidl.com.sun.star.drawing.XDrawPagesSupplier)xComponent; // XDrawPages inherits from com.sun.star.container.XIndexAccess unoidl.com.sun.star.drawing.XDrawPages xDrawPages = xDrawPagesSupplier.getDrawPages(); // get the page count for standard pages int slideCount = xDrawPages.getCount(); xComponent.dispose(); // The following way is very slow, but i could not find a better // way to do this. for (int index = 0; index < slideCount; ++index) { pdfOutPath += outFileName + "_" + index + ".pdf"; ooOutPath = ToOOURL(pdfOutPath); xComponent = xComponentLoader.loadComponentFromURL(pptPath, "_blank", 0, loadProps); while (xComponent == null) { /Let the component load. System.Threading.Thread.Sleep(1000); } xDrawPagesSupplier = (unoidl.com.sun.star.drawing.XDrawPagesSupplier) xComponent; // XDrawPages inherits from com.sun.star.container.XIndexAccess xDrawPages = xDrawPagesSupplier.getDrawPages(); XStorable xstorable = (XStorable)xComponent; // Remove all the slides except this one. for (int removeSlide = slideCount - 1; removeSlide >= 0; --removeSlide) { if (removeSlide != index) { unoidl.com.sun.star.drawing.XDrawPage removePage = (unoidl.com.sun.star.drawing.XDrawPage) xDrawPages.getByIndex(removeSlide).Value; // Remove the Slide. xDrawPages.remove(removePage); } } PropertyValue[] props = new PropertyValue[1]; props[0] = new PropertyValue(); props[0].Name = "FilterName"; props[0].Value = new uno.Any(“impress_pdf_export”); // Store to the given path. xstorable.storeToURL(ooOutPath, props); xComponent.dispose(); // This line causes problem } } catch (System.Exception e) { string errorStr = "Can't Convert Using Open Office"; } finally { // Quit Open Office. ((XDesktop)xComponentLoader).terminate(); // This line as well. } [/b] --------------------------------------------------------------------- Please do not reply to this automatically generated notification from Issue Tracker. Please log onto the website and enter your comments. http://qa.openoffice.org/issue_handling/project_issues.html#notification --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]