public void ShowWindow (Window win) { var ev = new ManualResetEvent (false); win.Shown += delegate { ev.Set (); }; win.Show (); ev.WaitForEvent (); Application.MainLoop.DispatchPendingEvents (); }