>>>Since changing the oApp happens very rarely I would consider re-cycling the app rather than invalidating the version that may be in use by others. But, given that you are where you are, can you not at least identify those elements which are subject to change and clone *only* those rather than the whole oApp ?
>>
>>Yes, I have been thinking about that. Basically, it is oProcess.oApp.Tables and a few others such as the oProcess.oApp.Provinces and oProcess.oApp.Countries. So, if I do it at that level directly, since it is a first level, will the clone works as the same as if it would be a deep copy? Because, if this is also only a reference copy, I will not be any better.
>
>On reflection, I don't think it could work. If oApp is a singleton (or shared) then cloning an object which is a property of oApp means everyone will be referencing the same clone (i.e. oProcess.oApp.Tables = Clone(oProcess.oApp.Tables) achieves nothing). The objects which might be changed would need to be cloned independently and not be properties of oApp.
For the App class - I agree that having a oApp public Get/Private Set would be better
Gregory