I have found a solution:
var newWindowThread = new Thread(() =>
{
MainWindow window = new MainWindow();
window.Show();
window.Closed += window_Closed; //here we have method which will shutdown current Dispatcher when window is closed
Dispatcher.Run();
});
Still don't know exactly how Dispatcher.Run(); works, but it does what I need.