나는 수정 된 파일을 잡고 저장소에 다시 넣어 필요가 저장 한 후, 을 일부 문서를 편집 할 수 MS 워드 자동화를 사용하여 응용 프로그램과 가까운 단어이 거기에 내가이 일을 얻을 수없는 하나 개의 시나리오와 사용자가 파일을 변경을 할 때 그 입니다, 단어를 닫 선택하고 파일을 저장하려면 예를 선택MS 워드 자동화 :이 저장된 후 파일 내용을 가져
2 이벤트가 있습니다 그 나는 다음을 사용하고있다 : DocumentBeforeSave 종료
Quit 이벤트에 디스크에서 .docx 파일을로드하려고하지만 파일이 여전히 사용 중이므로이 특정 시나리오에서 IOException이 발생합니다. Quit 이벤트가 처리 된 후까지 기다려야합니다. 말씀이 실제로 폐쇄없고 파일이 더 이상 나는 그것이이 아주 못생긴 작동하는 동안이
word.Visible = true; while (!wordDone) { //gets changed to true on the Quit event System.Threading.Thread.Sleep(100); } bool error = false; do { try { //need to load the contents of the modified file ls.Content = System.IO.File.ReadAllBytes(provider.GetFileName()); error = false; } catch (System.IO.IOException) { error = true; System.Threading.Thread.Sleep(200); } } while (error);
를 사용하여 작업이 지금
을 사용할 때, 나는 방법에 필요 종료 이벤트가 처리 된 후에 이벤트를 발생 시키거나 단어가 아직 실행되는 동안 현재 스레드를 차단합니다. 문서를 저장 한 후 이벤트가 발생하면 최종선은 입니다. 파일을 저장하고 단어를 닫은 후 파일을로드하려면 깨끗한 방법이 필요합니다.. DocumentAfterSave는 굉장 하겠지만 존재하지 않는 것 같습니다.
차이나는 또한으로 ManualResetEvent의 사용 또는 관련 클래스를 조사하고 있습니다를하지
나는 또한이 핸들러를 종료 unhooking과 종료 핸들러에 word.Quit를 호출했는데, 지금까지 거의 작동하지만 단어가 닫혀 있고 파일이 더 이상 사용되지 않는지 확인하기 위해 신호를 보낸 후에도 일시 중지해야합니다.
실제로 필요한 코드로 작업 했으므로 작업 코드를 약간 게시 할 것입니다. – BlackTigerX
그리고 나서 사용자가 동일한 Word 인스턴스에서 열리는 다른 Word 문서를 열고 사용자가 파일을 닫을 때 Word가 종료되지 않습니다. –
사실,이 솔루션은 작동하지만 사용자가 실제로 Word 인스턴스를 닫을 경우에만 작동한다는 점에 유의해야합니다. 그러나 모든 것이 "풀려났다"는 것을 확인한 유일한 안전한 방법입니다. – Almund