ОК, спасибо за эту подсказку.Я пробовал разные вещи, и в конце концов, похоже, что работает так:
DispatcherOperation op = System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke((Action)(() => { SomeMethod(someArgs); }));
DispatcherOperationStatus status = op.Status;
while (status != DispatcherOperationStatus.Completed && status != DispatcherOperationStatus.Aborted)
{
status = op.Wait(TimeSpan.FromMilliseconds(10000));
if (status == DispatcherOperationStatus.Completed || status == DispatcherOperationStatus.Aborted)
{
// do your final code
}
}