Dispatcher
이 일시 중단 된 경우 (Dispatcher.DisableProcessing()
) 메시지 상자를 표시하려고하면 예외가 발생합니다.Dispatcher.DisableProcessing이 활성화되어 있는지 어떻게 알 수 있습니까?
?InvalidOperationException : 'Dispatcher 처리가 일시 중단되었습니다'(here 참조).
사람이
Dispatcher
이 일시 중단되지 않았거나 어디 감지 할 수있는 방법을 알고 있나요 는 (그래서 나는 경우BeginInvoke()
전화를 알고)
편집 1 : 나는 메시지 박스를 보여주기 위해 노력하고있어 Application.DispatcherUnhandledException 이벤트에 대한 반응에서
. 그러나 데이터 바인딩 중에 처리되지 않은 예외 (예 : ItemsControl.ItemsSource
)가 발생하면 Dispatcher
이 일시 중지됩니다. MessageBox
을 표시하려고하면 실패합니다. 항상 Dispatcher.BeginInvoke()
을 사용하면 문제가 해결되지만, 실제로 필요하지 않는 한 그렇게하고 싶지는 않습니다.
편집 2 :이 다음과 같이 작동 달성하기 위해 반사를 사용하여
:
var dispatcherType = typeof(Dispatcher);
var countField = dispatcherType.GetField("_disableProcessingCount", BindingFlags.Instance | BindingFlags.NonPublic);
var count = (int)countField.GetValue(Dispatcher.CurrentDispatcher);
var suspended = count > 0;
I 따라서 현재 위치에서 완전한 질문을하고, 여기에서 자세한 내용을 제공하는 것이 좋습니다. –