Question

J'utilise une application de console simple pour convertir les formulaires InfoPath en fichiers PDF. Voici un bref résumé de la façon dont je vais à ce sujet.

Sommaire:L'application Console crée un formulaire Windows. Lorsque le formulaire est chargé (modalement), j'ajoute un contrôle InfoPath (Microsoft.office.infopath.formControl) à cette fenêtre. À ce moment-là, j'appelle infopathControl.open (MyInfopathFileStream). Tout cela se fait dans un forloop.

Le problème:Au hasard, l'application lancera des exceptions (défaillance catastrophique, tas corrompu, etc.), et encore mieux, il se bloque parfois sans lancer d'erreur. L'enregistrement et le débogage m'ont amené à croire qu'il est suspendu dans l'appel InfopathControl.Open (MyInfopathFilestream). De toute évidence, pour un processus automatisé, cela est inacceptable.

Solutions tentées (mais échouées)

  • J'ai essayé d'envelopper chaque formulaire créé dans son propre thread (STA) et à utiliser thread.join. Cela n'a pas fonctionné en raison de problèmes avec com.
  • J'ai essayé d'envelopper chaque itération de la boucle dans son propre domaine d'application. Cela a fonctionné dans une certaine mesure, mais en raison de la nature des appdomains toujours synchrones, cela ne résoudra pas le problème d'une erreur hangs. De plus, curieusement, il semble que je ne sois pas toujours en mesure de prendre des exceptions lancées par l'objet com.
  • Enfin, j'ai essayé de mettre une minuterie sur le fil de formulaire pour lancer une exception si la minuterie expire jamais. Jusqu'à présent, je n'ai pas pu prouver les deux cas si cela fonctionne ou non.

Toutes les idées seraient très appréciées car j'ai déjà passé beaucoup de temps à cela.

Merci!

Était-ce utile?

La solution 2

En fin de compte, la solution consistait à exécuter le processus de conversion InfoPath dans son propre exécutable avec la configuration des codes de retour pour le succès, l'échec et les types d'erreurs spécifiques. Cela a ensuite été appelé par un deuxième exécutable avec un temps mort. Si la conversion n'a pas réussi dans un délai, elle serait tuée par l'exécutable d'appel. Cela ne résout finalement pas les problèmes au sein des bibliothèques d'automatisation InfoPath, mais il fait le travail dont nous avions besoin pour faire sans échec.

Autres conseils

Malheureusement, ce que vous essayez de faire, c'est être un effort extrêmement coûteux en interne et vous êtes probablement mieux adapté à l'achat d'un outil pour le faire pour vous. Voici un lien qui vous indiquera vers un outil largement accepté qui fait ce que vous recherchez.

http://social.technet.microsoft.com/forums/da-dk/sharepoint2010custation/thread/528c3459-074f-43f7-a7a1-d4a169b27c93

Faites-moi savoir si cela vous aide - en tant qu'ingénieur logiciel, je sais que cela va à l'encontre de tout en vous, mais vous êtes contre un mur très important et fort avec celui-ci.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top