Hello, I am working on an ArcGIS 2.4.1 Pro AddIn that processes CPU-intensive tasks. One of the tasks is to create Polygons from parts of different PolyLines, which I achieved with the following code (shortened to the minimal relevant part): PolylineBuilder polylineBuilder = new PolylineBuilder (SpatialReference); polylineBuilder .AddParts(contourPolyLine.Parts); polylineBuilder .SplitAtDistance(splitDistance, false , true ); var newPolygon3D = PolygonBuilder . CreatePolygon ( polylineBuilder . ToGeometry () . Copy3DCoordinatesToList (), SpatialReference); This works just fine by itself, but took 40 minutes to process for about 3.000 objects. As this is run within QueuedTask . Run ( async () =>...), ArcGIS Pro only utilized 1 CPU core of my 8 core machine. All attempts of separating the work and running several parallel tasks failed so far, because PolylineBuilder can not be used in a regular Task.Run(...)-Thread (Exception is thrown: "This object must be created within the lambda passed to QueuedTask.Run, or on a compatible STA thread."). I had a look at ProConcepts Framework · Esri/arcgis-pro-sdk Wiki · GitHub and searched the community samples but couldn't find a similar scenario. In another ArcGIS AddIn I was able to use 100% of the CPU by creating multiple threads that each take a part of the workload, but in that case I had only calculations with regular managed code and no ArcGIS Pro Tools were involved: await Task . WhenAll ( Enumerable . Range (1, Environment .ProcessorCount). Select ( c => Task . Run ( () => { DoWork (); } Is there a solution to utilize the full CPU also for jobs that use ArcGIS.Core.Geometry Tools/Classes like PolylineBuilder ? Any hint or example would be appreciated. Cheers
... View more