Когда я пытаюсь добавить 3D-контент в Viewport3D, асинхронно, это приводит к «Доступ к этому API с аргументами из неправильного контекста». в исключении TargetInvocationException.
3D-контент генерируется из данных устройства 3D-сканирования. Коммуникация и расчеты, необходимые для этого, выполняются в отдельном потоке. Сначала я попытался получить доступ к viewport3D из этого потока. Я понял, что это должно быть сделано GUI-потоком, поэтому теперь я использую этот код:
ModelVisual3D model = new ModelVisual3D();
model.Content = scanline;
DispatcherOperation dispOp = this.viewport.Dispatcher.BeginInvoke(
new AddModelDelegate(StartAddModel), model);
}
private void StartAddModel(ModelVisual3D model)
{
this.viewport.Children.Add(model);
//model is not in the context of this current thread.
//Throws exception: "This API was accessed with arguments from the wrong context."
}
private delegate void AddModelDelegate(ModelVisual3D model);
Кажется, что объект с именем "модель" не находится в контексте текущего потока. Как я могу это исправить? Есть ли способ вывести модель в контекст диспетчера?
Или этот способ сделать это просто не путь сюда?