private void StartProcess(string[] files) { AProgressBar.Value = 0; DropGrid.AllowDrop = false; ((Storyboard)Resources["StartStoryboard"]).Begin(); ProcessThread = new Thread(() => { IsProcessing = true; ProgressUpdateThread = new Thread(ProgressUpdateLoop); ProgressUpdateThread.Start(); string message = ProcessUnit.Process(files); IsProcessing = false; Dispatcher.Invoke(() => { AProgressBar.Value = -1; DropGrid.AllowDrop = true; ((Storyboard)Resources["EndStoryboard"]).Begin(); MessageBox.Show(this, message); ProcessFinished?.Invoke(); }); }); ProcessThread.Start(); }