Dieses Pattern mit InvokeRequired/CheckAccess läuft einem oft über den Weg, aber ich konnte damit noch nie etwas anfangen - wie will man bei einem größeren Programm Thread Safety erreichen, wenn man nicht einmal weiß, welche Methode aus welchem Thread aufgerufen wird

. Also einfach festlegen, dass die Methode auf dem Hauptthread ausgeführt werden muss und aus dem Nebenthread heraus invoken. In modernem C# würde zur Parameterübergabe noch Lambdas benutzen, sodass der eigene Delegate-Typ wegfallen kann, und bei einer so kurzen Methode sie selbst wahrscheinlich auch.
C#-Quelltext
1: 2: 3: 4: 5:
| Dispatcher.BeginInvoke(new Action(() => { buttonLoadFiles.IsEnabled = true; myProgressbar.IsIndeterminate = false; MessageBox.Show(e.ErrorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error); })); |