>>Just thought that in case something can reset oApp.lInitialize - for whatever reason - the first test may think it's initialized and when it executes the next line it isn't anymore
>
>That might be the case as the locking code, once done, sets oApp.lInitialize to True. So, the other instances of the same worker process, once they receive their go ahead lock, will go in it but will get out immediately by the use of the inside second oApp.lInitialize verification.
>
>And, we want the first oApp.lInitialize verification to remain there, the outer one, as we wouldn't want each hit after that, such as a quarter millions hits a day, to use SyncLock for nothing.
Ok,
As I replied to Bonnie, you may want to add an initializer to the dictionary property
For a non static property it will initalize when oApp is instantiated
for a static property, it will initialize when the static class is first accessed or the static property is first accessed
http://msdn.microsoft.com/en-us/library/ms182275(v=VS.100).aspxYou don't need any locks then - as I see it
Gregory