Joel,
>Thanks for that explanation. It coincides with testing I've done before. Regarding public variables and environment settings, each thread is protected using thread local storage. From VFP Help:
That is the case only if the MTDLLs are running in separate threads, which they are NOT if you call two instances of the MTDLL from VFP and it's not installed in COM+. In my first example, if you had set up a Public var and incremented it on each call to ShowEnv(), you would have seen that the "o2" object would add on to the value already set by the "o" object, since they were both running on the same thread and sharing the same thread local storage.
However, in the COM+ example, the publics for each instance would be completely isolated from each other, since the MTDLLs were each running on different threads.