public void run_application() { var waitForApplicationStart = new ManualResetEvent(false); var thread = new Thread(() => { _app = new App(); _app.Startup += (s, e) => { waitForApplicationStart.Set(); }; _app.Run(); }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); waitForApplicationStart.WaitOne(); _dispatcher = Dispatcher.FromThread(thread); _dispatcher.Invoke(new ThreadStart(() => _window = _app.MainWindow as TestApp.Window)); _whiteApp = Application.Attach(Process.GetCurrentProcess()); _windowAutomation = _whiteApp.GetWindow("MainWindow"); }