2016-11-23 5 views
0

우리는 MS Project로 데이터를 내보내고 가져올 수있는 응용 프로그램을 가지고 있습니다. 데이터의 양은 매우 클 수 있습니다 - 1000 개 이상의 작업. 하지만 데이터가 작을지라도 우리는 이상한 Project 동작을 발견했습니다. 하나 이상의 연속 작업을 할 때 "app is busy"예외가 발생할 수 있습니다. 예 : 새 작업을 만들고 종료 날짜를 읽습니다. 방금 ​​Application 개체를 만든 후에도이 예외를 첫 번째 작업으로 throw 할 수 있습니다. 의미 :com interop를 통해 MS Project에서 작업 할 때 "app is busy"예외는 어떻게 피할 수 있습니까?

var projectApp = new Application(); 
projectApp.Open(...); 

두 번째 줄에는 프로젝트 앱이 계속로드되어 있기 때문에이 예외가 발생할 수 있습니다.

Thread.Sleep을 추가하려고했지만 일부 작업의 경우 다른 작업보다 시간이 많이 걸리고 작업에 필요한 시간이 다른 컴퓨터 (성능으로 인해)마다 다르기 때문에 좋은 방법은 아닙니다.

그래서 questuin은 : 이러한 unpatchable 예외를 항상받지 않고 Project App이 사용 중임을 감지하는 방법이 있습니까?

+1

Google "C# CoRegisterMessageFilter"는 조회수입니다. –

답변

1

STA를 스레드 작업에 적용하고 OleMessageFilter를 사용하여 등록/철회 Google을 통해 발견 된 문제 해결! Hans Passant에게 감사의 말을 전했습니다.