private void EnsureFileUpdateWindow() { lock (_Lock) { if (_FileUpdateWindow == null) { AutoResetEvent wait = new AutoResetEvent(false); ThreadStart threadStart = delegate { _FileUpdateWindow = new FileUpdateWindow(); _FileUpdateWindow.DeploymentManifest = DeploymentManifest; _FileUpdateWindow.TotalUpdateSize = TotalUpdateSize; wait.Set(); _FileUpdateWindow.Show(); _FileUpdateWindow.SlideUp(); Application app = new Application(); app.Run(_FileUpdateWindow); }; Thread thread = new Thread(threadStart); thread.SetApartmentState(ApartmentState.STA); thread.Start(); wait.WaitOne(); } } }