간단한 콘솔 응용 프로그램을 사용하여 infopath 양식을 PDF 파일로 변환하고 있습니다. 다음은이 문제에 대한 간단한 요약입니다.Infopath FormControl이 control.open에서 멈춤
요약 : 콘솔 응용 프로그램은 Windows 양식을 만듭니다. 양식이로드 될 때 (모달) infopath 컨트롤 (Microsoft.Office.InfoPath.FormControl)을이 윈도우에 추가합니다. 이 시점에서 나는 infoPathControl.Open (myInfoPathFileStream)을 호출한다. 이 모든 작업은 forloop에서 수행됩니다.
문제 : 무작위로 예외 (치명적인 오류, 손상된 힙 등)가 발생합니다, 심지어 더 나은 가끔 오류를 던지고없이 중단됩니다 응용 프로그램. 로깅 및 디버깅을 통해 infoPathControl.Open (myInfoPathFileStream) 호출에 걸려 있다고 생각하게되었습니다. 분명히 자동화 된 프로세스의 경우 이는 받아 들일 수없는 것입니다.
시도 (그러나 실패) 솔루션 나는 그것을 자신의 (STA) 스레드에서 생성 된 각각의 양식을 감싸고를 Thread.join 사용하려고했습니다
- . 이것은 COM 관련 문제로 인해 작동하지 않습니다.
- 저는 루프의 각 반복을 자체 응용 프로그램 도메인에 배치하려고했습니다. 이것은 어느 정도까지는 효과가 있었지만 appDomain의 특성으로 인해 여전히 동기 적이기 때문에 hang-without-error 문제는 해결되지 않습니다. 또한 이상하게도 COM 개체에 의해 throw 된 예외를 항상 잡을 수있는 것은 아닙니다.
- 마지막으로, 타이머가 만료되면 예외를 던지기 위해 폼 스레드에 타이머를 넣으려고했습니다. 지금까지 나는 이것이 작동하는지 여부를 증명할 수 없었습니다.
나는 이미 많은 시간을 보냈다.
감사합니다.