Word Add-In에서 동일한 문제가 발생했습니다. 매우 까다로운 개발자 상자에서 백그라운드로 모든 작업을하고 있지만 UI가 잠겨 있습니다. 그래서 즉, 새로운 Thread (에 Window 객체를 인스턴스화 -
내 이론은 내가 백그라운드 스레드에서 호출에도 불구하고 말씀이
나는 실험을 시도 등, UI 스레드에서 일을하고 있다는 것입니다 내 UI 스레드는 Word의 작업자 스레드와 동일한 스레드가 아닙니다.) - 작동했습니다. 내 UI가 더 이상 임의의 간격으로 잠기지 않습니다.
스레드가 닫히기 전에 COM 개체의 인스턴스를 제거하고 스레드 간 COM 액세스 (특히 RC 호스트에 액세스 할 때 Dispatcher.Invoke를 Office 호스트 응용 프로그램의 스레드로 잠재적으로 사용)에주의하십시오. . 다시 Dispatcher.Invoke 경우 : -
주) ... 디스패처는가 인스턴스화하고있는 스레드와 연관된, 그래서 당신은 단지 등 사무실 호스트 응용 프로그램의 콜백에서 디스패처를 인스턴스화 할 것 다음과 같이 Thread.Join을 호출하는 스레드에 사용할 수 없습니다. (이 경우, 응용 프로그램 이벤트, Thread.Sleep 및 Thread.Yield를 처리해야합니다.) 그렇지 않으면 교착 상태가 발생합니다. 여기
는 genericized 예를 들어 내가 뭘하는지 버전입니다 : 내가 가진 동일한 문제가 // This approach makes WPF Windows an order of magnitude more responsive
Thread t = new Thread(() =>
{
try
{
// Implement the IDisposable pattern on your window to release
// any resources before the thread exits
using (var myWindow = new MyWindow())
{
// Do any other pre-display initialization with the myWindow
// object here...
myWindow.ShowDialog();
}
}
finally
{
// Strongly Recommended (not doing this may cause
// weird exceptions at application shutdown):
Dispatcher.CurrentDispatcher.InvokeShutdown();
}
});
t.SetApartmentState(ApartmentState.STA); // Required
t.IsBackground = false; // Recommended
t.Start(); // Kicks off the new UI thread
t.Join(); // Blocks execution until the new UI thread has finished executing...
워드 추가 기능 - 나는 확실히 WPF의 UI 스레드에서 모든 작업을 수행하고 있지 않다 - 나는 의심 저자도 마찬가지다. - Outlook/Word (기타)가 UI 스레드에서 작업을 수행하고 WPF가 응답하지 않을 가능성이 높습니다. 이 문제를 방지하는 방법에 대한 자세한 VSTO 관련 답변이 필요합니다. – BrainSlugs83
@ BrainSlugs83 혹시이 문제를 해결 했습니까? 나는 똑같은 문제에 직면하고있다. – Nikhil