Просто звонить TaskScheduler.FromCurrentSynchronizationConext()
из любого места недостаточно.Убедитесь, что вызывающий поток является пользовательским интерфейсом и уже находится в диспетчере пользовательского интерфейса, когда этот код вызывается, т.е. обработчики событий Window_Load () / Button_Click () и т. Д. Являются лучшим местом для вызова этого кода.
Task.Factory.StartNew(() => RenderThumb(UriSource)).ContinueWith((bs) => {....}, TaskScheduler.FromCurrentSynchronizationConext());
Теперь вы можете предположить, что ICommand.Execute()
должно быть в порядке, но они могут вызвать проблему, если сами команды были созданы в другом потоке, как фоновый рабочий.