2013-04-23 2 views
2

안녕하세요!VSTO Word 추가 기능 : MessageBox 타이밍 문제

나는 사용자가 주어진 텍스트에서 특정 단어를 대체하는 데 도움이되는 VSTO Word Addin을 연구 중이다. 대화 상자가 사용자에게 대체품을 안내합니다. 이제 사용자가 마지막 단어를 바꿀 때 그는 수행 된 MessageBox을 표시하려고합니다. 거기에 타이밍 문제로 어려움을 겪고 있습니다. MessageBox는 마지막 대체가 표시되기 전에 나타납니다. 그럼에도 불구하고 교체를위한 코드 라인은 이전에 실행됩니다. MessageBox를 클릭 한 후에는 반드시 교체해야합니다. 여기

내가 단어를 대체하기 위해 사용하는 라인 :

using Microsoft.Office.Interop.Word; 
... 
Words wordsText = Globals.ThisAddIn.Application.ActiveDocument.Words; 
... 
wordsText[wordPos].Text = "[some text]"; 

을 그리고 이것은 나중에 표시 내 메시지 박스입니다 : 나는에 위의 줄에 중단 점을 설정 한 경우

MessageBox.Show(this._owner, "[you are done text]", "[title]", MessageBoxButtons.OK, MessageBoxIcon.Information); 

가 나는 것으로 나타났습니다 Visual Studio는 MessageBox가 나타나기 전에 올바르게 대체됩니다. Microsoft.Office.Interop.Word.Words의 변경 사항을 어쨌든 강제 적용 할 수 있습니까? 다른 아이디어?

+0

당신이 스레드에서 작업을 실행하는 희망? 나는 이것을 재현 할 수 없었고, 나를 위해 잘 작동한다. 어쩌면 당신은'wordPos'를 통해 루프를 돌리는 곳에서 전체 코드를 게시 할 수 있습니까? – etaiso

답변

0

내가, 아니 진정한 해결책이없는 몇 가지 아이디어를 수행

  • 어쩌면 당신은 그냥 System.Windows.Forms.Application.DoEvents();을 할 수있는 ...
  • 을 또는 새 문서를 만들 Application.ActiveDocument.Words를 업데이트 윈 워드를 강제로 다시 삭제합니다. ..

, 그것은 도움이 르그

관련 문제