2011-02-15 2 views
1

간단한 콘솔 응용 프로그램을 사용하여 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 된 예외를 항상 잡을 수있는 것은 아닙니다.
  • 마지막으로, 타이머가 만료되면 예외를 던지기 위해 폼 스레드에 타이머를 넣으려고했습니다. 지금까지 나는 이것이 작동하는지 여부를 증명할 수 없었습니다.

나는 이미 많은 시간을 보냈다.

감사합니다.

답변

1

결국 솔루션은 성공, 실패 및 특정 유형의 오류에 대한 리턴 코드 설정과 함께 자체 실행 파일 내에서 infopath 변환 프로세스를 실행하는 것이 었습니다. 그런 다음 시간 초과가있는 두 번째 실행 파일에 의해 호출되었습니다. 일정 기간 내에 변환이 성공하지 못하면 호출하는 실행 파일에 의해 변환이 종료됩니다. 이것은 궁극적으로 infopath 자동화 라이브러리 내의 문제를 해결하지는 못하지만, 우리가 실패하지 않고 수행해야 할 작업을 수행합니다.

1

불행히도 당신이하려는 것은 내부적으로 비용이 많이 드는 노력 일 것이고 아마도 당신을 위해 도구를 구입하는 것이 좋습니다. 여기 당신이 찾고있는 것을 수행하는 널리 받아 들여지는 도구를 가리킬 수있는 링크가 있습니다.

http://social.technet.microsoft.com/Forums/da-DK/sharepoint2010customization/thread/528c3459-074f-43f7-a7a1-d4a169b27c93

이 당신을 도움이되는지 알려주세요 - 소프트웨어 엔지니어로 나는 이것이 당신이 내 모든 반하는 알고 있지만이 하나 매우 크고 강력한 벽에있어.