Как я понимаю, вы не должны использовать параллельную обработку, чтобы делать вещи в Revit через свой API. Более подробную информацию можно получить по адресу: http://thebuildingcoder.typepad.com/blog/2014/11/the-revit-api-is-never-ever-thread-safe.htmlПараллельная обработка для извлечения данных с использованием Revit API
Однако в настоящее время я имею дело с проблемой получения (и получения только), а затем изучения большого количества данных для принятия некоторых решений. Образец код с помощью TPL приводится ниже, что, кажется, работают:
Parallel.ForEach<Element>(allDocumentElementsNotVisibleInCurrentView,
parallelOptions,
element =>
{
MyDerivedElement iaElement = new MyDerivedElement(uiDocument.Document, element, ElementStatusInView.Found);
// The following condition line does the real heavy lifting and can be a lengthy process, involving data extraction from Revit, such as bounding boxes, geometry and curves
if (iaElement.IsContained(iaView))
lock (result)
result.Add(iaElement);
});
Так что мой вопрос, учитывая, что выше, кажется, работает в тестах, это хорошая идея, чтобы этот один проход по параллельной обработке ?
Благодарим за помощь!
«Если тесты проходят, это потому, что вы недостаточно проверили». – Maxence