AnsweredAssumed Answered

Geodatabase Objects in multiple threads?

Question asked by j.buchtaesri-de-esridist Employee on Aug 27, 2015
Latest reply on Aug 30, 2015 by j.buchtaesri-de-esridist

I understand that each and every object in the ArcGIS.Core.Data lives on the MCT and therefore has to be used within QueuedTask.Run(..) scope. This makes ArcGIS Pro actually to kind of a single threaded application, as soon as it comes to data access.


While looking through the community samples, I stumbled across arcgis-pro-sdk-community-samples/CoreHost/CoreHostSample at master · Esri/arcgis-pro-sdk-community-samples · GitHub  where the Geodatabase-Object is used in the main thread (being an STA Thread), without QueuedTask.


This led me to the first question / test program: What happens, if the geodatabase object is instantiated and used in one background thread? Seems to work fine.


Second question / test program: What happens, if two geodatabase objects are created in two different (STA-) threads and some work is done on different tables? Seems to work fine.


Question is: Is this supported in any way? I do understand, that I will run into problems as soon as I try to pass objects from one thread to another. Updating data might also become critical, as there might be no synchronization context. But if I stay in a read-only context, is it ok to create "my own" geodatabase object in "my own" thread?


Kind Regards