I have a problem with TXdataClient: I have a web service that itself calls other web services. When my service is called exesively, it comes to an exeption in TXDataClient (TXDataModelManager.Get) : "Duplicates not allowed".
The error occurs because there is an overlap in TXDataModelManager.Get. This can be intercepted by adding a monitor (MonitorEnter(FModels) - MonitorExit(FModels)). Of course this would also have to be done in TXDataModelManager.Replace.
TXDataModelManager.Get is not thread-safe for performance reasons (to avoid adding the monitor).
Do you have too many models? The easy workaround is to simply call
TXDataModelManager.Get in advance for all the models you are going to use in your application. After this, it will work safely.
I use only one model.
In my thread I do the following:
xxx:=Client.GetInterface; //This calls the ModelManager!
As I said, I do this per thread! But if I massively call this thread at the same time, then the GetInterface fails with an exception!
Can you please try this:
I can't create the TXDateClient before, because they are needed for every incoming request. Since this is a web service, I don't know beforehand how many TXDateClients I need; at runtime there are sometimes a few, but there can be more than 100 at the same time...
I myself do not call the ModelBuilder; this is done by TXDataClient, so I have no influence on how this is done.
The suggestion in the link I provided is to use the code to load the whole mapping in advance. It doesn't relate to creating