Eine Ausnahme wird ausgelöst, wenn versucht wird, ein Meldungsfeld anzuzeigen, wenn ausgesetzt ist (Dispatcher.DisableProcessing()
genannt).Wie kann ich feststellen, ob Dispatcher.DisableProcessing aktiv ist?
InvalidOperationException: 'Dispatcher-Verarbeitung wurde ausgesetzt' (siehe here).
Wer weiß, wie ich erkennen kann, wo die Dispatcher
ausgesetzt ist oder nicht (so weiß ich, wann BeginInvoke()
nennen)?
Edit 1:
In Reaktion auf das Application.DispatcherUnhandledException Ereignis Ich versuche, eine MessageBox zu zeigen. Wenn diese nicht behandelte Ausnahme während DataBinding (d. H. ItemsControl.ItemsSource
) ausgelöst wurde, wird die Dispatcher
jedoch ausgesetzt. Der Versuch, eine MessageBox
anzuzeigen, schlägt fehl. Immer mit Dispatcher.BeginInvoke()
löst das Problem, aber ich möchte das nicht tun, es sei denn wirklich notwendig.
Edit 2:
Reflection Mit dieser funktioniert wie folgt zu erreichen:
var dispatcherType = typeof(Dispatcher);
var countField = dispatcherType.GetField("_disableProcessingCount", BindingFlags.Instance | BindingFlags.NonPublic);
var count = (int)countField.GetValue(Dispatcher.CurrentDispatcher);
var suspended = count > 0;
Ich schlage vor, Sie weitere Details hier bieten, so dass die Frage vollständig an Ort und Stelle zu machen. –