Окно.Activate() не работает должным образом

#c# #.net #wpf

#c# #.net #wpf

Вопрос:

Иногда Window.Activate() не работает в другой системе.

 var window = Application.Current.Windows.OfType<Window>().FirstOrDefault(y => y.IsActive) ?? Application.Current.Windows.OfType<Window>().FirstOrDefault();
if (window != null) 
    window.Activate();
  

Я хочу решение, которое не должно давать сбоев в любой системе, а также хочу знать основную причину этого.

Комментарии:

1. Вы можете попробовать переключиться window.Topmost = true; window.Topmost = false; непосредственно перед window.Activate(); . Это может быть хорошим обходным путем для таких редких ситуаций.

Ответ №1:

Это может привести к сбою, если вы вызываете его из потока, отличного от пользовательского интерфейса. В этом случае вам следует перенести вызов в диспетчер.

 Application.Current.Dispatcher.Invoke(() =>
{       
    ///.... UI stuff
});