Because of possible issues with using UIA objects in an STA, try to forceably marshal them from the MTA.
This approach uses CoMarshalInterThreadInterfaceInStream and CoGetInterfaceAndReleaseStream, as IGlobalInterfaceTable seems to always return the same pointer in the STA, probably because UIA declares a threading model of both. However, it looks like this approach does exactly the same thing.