From den_er at gmx.de Tue Mar 10 07:06:26 2009 From: den_er at gmx.de (Eric) Date: Tue, 10 Mar 2009 08:06:26 +0100 Subject: [rdnzl-devel] Problems with Interop calls Message-ID: <49B61172.70705@gmx.de> Hello everybody first off all i wanna thank you for this nice interface to the .Net-Framework. Now to my problem: I'm using RDNZL to control to ORC-Systems via .Net, my problem is that one OCR (tesseract) is working fine with it because it is possible to compile it with Microsoft Visual Studio(no problem at all). The other OCR-System ABBYY FineReader consits of DLL for which ABBYY provides an Interop-Assembly to communicate with it directly from the .Net-Framework. For controlling FineReader im using a C# Klasse (as an mediator in a DLL) which does futher action and intraktion with the OCR-System. If i use this Class direktly with a console-application compield in the .net-framework everything is fine. But if i use lisp and RDNZL to create an instance of the class and call a function of instance that calls _itself _a function of the ABBYY Interop-Assemble sometime the function call into the assembly don't came back. And if i start the process from Lispworks again everything works fine. Normally i would say it has nothing to do with RDNZL, but maybe it has some effects on the .Net-Framework which make it reacted different ??? So my question: Has someone experience with such a problem or does some know what i can do to find a workaround for this problem? -> When it stucks always the first call to the Interop-Assembly stucks, if this call don't stuck everything runs perfect. -> I also tried to call this Interop-Assembly directly with RDNZL with the same result, it sometimes stucks. Thanks a bunch for your help, Eric (If there is something unclear concerning my bad English and/or bad description i would be happy to describe it in detail) My System: - Win XP - LispWorks 5.1.1 Personal Edition - RDNZL 0.12.2. - Visual Studio 2008 Express Editions - .Net-Framework 3.5 Some Code: Unfortunately i can not provide an complete example or my full code, but here are at least some snippets. Also there happens nothing special, so i think the problem is somewhere else... and there is no exception coming back as if it is waiting or the call is not delivered. The function with starts the hole process in lisp: (defun OCR++FineReaderBildAuswerten (Speicherort bild sprache neuerSpeicherort ) (RDNZL:rdnzl-handler-case (let(dotNetList bilderAnzahl (ergebnis (list ) )) (OCR++FineReader-BilderPraeparieren (concatenate 'string Speicherort "\\" bild ) neuerSpeicherort) <<<---first Function to .Net see below (setq bilderAnzahl (- (OCR++FineReader-BilderAnzahl) 1)) (loop for n from 0 to bilderAnzahl do (OCR++FineReader-BilderOeffen n) (OCR++FineReader-InhaltAnalysieren ) (OCR++FineReader-InhaltAufbereiten sprache ) (OCR++FineReader-Speichern neuerSpeicherort bild :frz t :txt t) (setq dotNetList (OCR--FineReader-TextDatenStrukturLesen)) (setq ergebnis (cons (ORC--FineReader-erstelle-verschachtelterListe-Text dotNetList) ergebnis)) (OCR--FineReader-DokumentenAnalyseSaeubern)) (RDNZL:enable-rdnzl-syntax) (reverse ergebnis)) ( "System.Exception" (e) (print (RDNZL:invoke e "ToString") ) nil) )) =============================================== The first function which calls a function in the #Class: (defun OCR++FineReader-BildPraeparierenUndOeffnen(bild) (RDNZL:invoke fineref "bildPraeparierenUndOeffnen" bild ) ) =============================================== The function in the C# Class which calls a function of the Interop-Assembly: public Boolean bildPraeparierenUndOeffnen(String bildpfad) { Logger.logIT(this, " bildPraeparierenUndOeffnen: " + bildpfad, log); bildInformation = pEngine.PrepareAndOpenImage(bildpfad, bildBearbeitungsParameter, null, ref dokumentenInformation);*<<< here it stucks* Logger.logIT(this, " bildPraeparierenUndOeffnen: ende", log); return true; } -------------- next part -------------- An HTML attachment was scrubbed... URL: