You need to marshal calls across threads/apartments. See
this[
^] article for different ways to perform cross thread marshalling.
CoMarshalInterThreadInterfaceInStream()
would probably be the easiest approach. Look it up in the MSDN documentation. It's quite easy to use.