Следующее работает намного лучше для меня, когда я использую его в приложении WinForms, которое также использует WPF (в моем случае Arcri.exe от Esri)
private System.Windows.Threading.Dispatcher Dispatcher { get; set; }
// I put this in my view model constructor as it MUST be called from UI thread
Dispatcher = System.Windows.Threading.Dispatcher.CurrentDispatcher;
Другой метод (который включал вызов new System.Windows.Application()
для заполнения System.Windows.Application.Current
) вызывал проблемы для меня каждый раз, когда я открывал новое окно WPF, а затем закрывал его. Мало того, что это обнулило System.Windows.Application.Current
, но я больше не мог открывать новые окна, так как их InitializeComponents()
методы все потерпели неудачу с:
System.InvalidOperationException: 'Объект приложения находится
выключи. '
Пока новое решение работает без этих побочных эффектов.