Разница в ComponentDispatcher.ThreadIdle и DispatcherPriority.ApplicationIdle
Может кто-нибудь, пожалуйста, дайте мне знать разницу между кодом:
1.
System.Windows.Interop.ComponentDispatcher.ThreadIdle += (s, e) => System.Windows.Forms.Application.RaiseIdle(EventArgs.Empty);
И 2.
DispatcherTimer timer = new DispatcherTimer(DispatcherPriority.ApplicationIdle);
timer.Tick += (s, e) => System.Windows.Forms.Application.RaiseIdle(EventArgs.Empty);
timer.Start();
Мы размещаем WinFrom UserControl в приложении WPF, используя WindowsFormsHost
, Мы пытаемся загрузить изображения (около 1000) в поток диспетчера, а также, когда приложение бездействует, мы обновляем некоторые меню и пользовательский интерфейс в Winform contorl, используя событие Application.Idle из WinForm.
В первом случае все работает хорошо, а во втором - не работает. Во втором случае мне нужно переместить мышь, чтобы продолжить загрузку изображений, в противном случае загрузка изображений останавливается.
Я собираюсь использовать первый, потому что мне нужно исправить ошибку.
Но мне нужно понять разницу, прежде чем нажимать код.