private void Button_Click(object sender, RoutedEventArgs e) { if (!ERROR()) { return; } test = ((Test)DataContext); gif.Visibility = Visibility.Visible; new Thread(() => { try { bl.AddDrivingTest(test); MessageBox.Show(test.ToString(), "Your test:"); } catch (Exception m) { // gif.Visibility = Visibility.Hidden; MessageBox.Show(m.Message); } Dispatcher.Invoke(new Action(() => { try { gif.Visibility = Visibility.Hidden; Close(); } catch (Exception n) { MessageBox.Show(n.Message); } })); }).Start(); }