InfoPath FormControl Control.open에 중단됩니다
-
14-11-2019 - |
문제
간단한 콘솔 응용 프로그램을 사용하여 InfoPath 양식을 PDF 파일로 변환합니다. 여기에 내가 이것에 대해 어떻게 가는지에 대한 간략한 요약이 있습니다.
요약 : 콘솔 응용 프로그램은 Windows 양식을 만듭니다. 양식이로드 될 때 (modally) i이 창에 InfoPath 컨트롤 (Microsoft.Office.InfoPath.FormControl)을 추가합니다. 그 시점에서 InfoPathControl.Open (MyInfoPathFileStream)이라고 부릅니다. 이 모든 것은 forloop에서 수행됩니다.
문제 : 무작위로 응용 프로그램은 예외를 던지게합니다 (치명적인 실패, 힙, 손상된 등)을 던지고 때로는 오류를 던지지 않고 가끔씩 멈추게됩니다. 로깅 및 디버깅은 InfoPathControl.Open (MyInfoPathFileStream) 호출에 매달려있는 것으로 믿게 해 왔습니다. 분명히 자동화 된 프로세스의 경우 이것은 받아 들일 수 없습니다.
시도 (그러나 실패한) 해결책
- STA (Store) 스레드를 사용하고 Thread.Join을 사용하여 생성 된 각 폼을 포장했습니다. 이것은 com과의 문제로 인해 일하지 않았습니다.
- IT 자체 응용 프로그램 도메인에서 루프의 각 반복을 포장했습니다. 이것은 한 정도까지 일했지만 AppDomains의 성격이 아직 동기식이기 때문에 멈춤 숫자 오류의 문제를 해결하지 못할 것입니다. 또한, 이상하게, 그것은 항상 COM 객체가 던져있는 예외를 항상 잡을 수있는 것은 아닙니다.
- 마지막으로, 타이머가 만료되면 예외를 던지기 위해 타이머를 양식 스레드에 넣으려고 시도했습니다. 지금까지 나는 이것이 작동하는 경우 어느 쪽으로든 증명할 수 없었습니다.
어떤 아이디어가 이미이 시간에 좋은 시간을 보냈던 것처럼 많이 감사 할 것입니다.
감사합니다!
해결책 2
결국 솔루션은 성공 코드, 실패 및 특정 유형의 오류를 위해 리턴 코드 설정으로 IT 자체 실행 파일에서 InfoPath 변환 프로세스를 실행하는 것이 었습니다.이것은 시간 초과로 두 번째 실행 파일에 의해 호출되었습니다.전환이 일정 기간 내에 성공하지 못하면 통화 실행 파일에 의해 사망 할 것입니다.이것은 궁극적으로 InfoPath 자동화 라이브러리 내의 문제를 해결하지는 않지만 실패하지 않고 수행 해야하는 작업을 수행합니다.
다른 팁
불행히도 당신이하려는 것은 내부적으로 비용이 많이 드는 노력이 될 것입니다.다음은 당신이 찾고있는 것을하는 널리 받아 들여지는 도구를 가리키는 링크입니다.
이것이 당신이 당신 안에있는 모든 것에 대항하는 것을 알고있는 소프트웨어 엔지니어로서 당신이 당신의 모든 것에 대항하는 소프트웨어 엔지니어로서 당신을 알게되면 알려 드리겠습니다.