Если вы используете System.Windows.MessageBox, убедитесь, что вы вызываете .Show () в потоке пользовательского интерфейса. Кроме того, оцените аргументы MessageBox.Show перед передачей замыкания в BeginInvoke, чтобы избежать небезопасного доступа к потоку.
var message = MyUnsafeObjectAccess.Foobar;
Deployment.Current.Dispatcher.BeginInvoke(() => MessageBox.Show(message)); // safe