WPF a DoEvents

Že aplikace postavené pomocí WPF pracují odlišně od klasických WinForm aplikací snad ví každý, kdo aspoň jednou zkusil vytvořit WPF desktopovou aplikaci.

Proto ani nepřekvapí, že objekt Application ve WPF aplikaci neobsahuje metodu DoEvents, která je známá již od dob Visual Basicu 3 - pokud si tak matně vzpomínám. Nedávno jsem se však dostal do situace, že bych právě takovou metodu, která dovolí aktualizovat UI aplikace potřeboval. Zabezpečení několika po sobě následujících akcí, které se musely odehrát v hlavním threadu aplikace.

Chvíli jsem pátral, jak pomocí objektu Dispatcher zajistit aktualizaci WPF okna a nakonec jsem to našel:

Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { }));

možná to není úplně ideální, ale v danou chvíli mi toto volání postačuje, a snad se bude hodit i vám.

1 Comment

Add a Comment