>Can't pin it down but that feels a bit risky in that lFirstHit itself is not thread safe. And I'm also not sure whether taking a lock on a property of oApp itself is good. Best practice might be something like this:
If Not oApp.lInitialize Then
> SyncLock locker
> 'Check again inside safe section
> If Not oApp.lInitialize Then
> 'Do stuff
> oApp.lInitialize = True
> End If
> End SyncLock
> End If
>'Where locker is:
>Private Shared locker As New [Object]()
No guarantees :-}
>
>UPDATE: I mocked this and don't think the use of the oApp property as the monitor would be a problem. But what is critical is the need to *recheck* the conditional value (in this case oApp.lInitialize) once the lock is obtained.
I think this is what I have right now. I can ajdust a little bit as mentioned to see if it would be better by adding another oApp.lInitialize before the lock.