to update UI controls from background thread you need to use the Dispatcher of UI - Window and invoke it like
_preShellWindow.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Render, new Action(() =>
{
MessageBox.Show("Hii");
}));
Also you can call Update Layout base on your requirement
this.Dispatcher.Invoke(DispatcherPriority.Render, (Action)delegate()
{
InvalidateArrange();
InvalidateVisual();
InvalidateMeasure();
UpdateLayout();
});