Jeśli interfejs w swoim pytaniu jest interfejs COM, podejście podane przez Quassnoi może nie być wystarczające . Trzeba zwrócić uwagę na model wątkowy używanego obiektu COM. Jeśli wątek dodatkowy zostanie dołączony do oddzielnego mieszkania COM, od tego, w którym został utworzony obiekt COM, i jeśli ten obiekt nie jest apartament-zwinny, musisz wprowadzić ten wskaźnik interfejsu w ten sposób, aby wątek wtórny uzyskał pełnomocnictwo , a nie bezpośredni wskaźnik do obiektu.
Obiekt COM jest zwykle zwinięty w apartament przy użyciu specjalnej implementacji IMarshal. Najprostszym podejściem jest agregowanie Free Threaded Marshaler.
Przydatne linki ...
Aktualizacja: O wolnym gwintowane Marshaler ...
To wynika z komentarzy na ten temat, że niektórzy ludzie by to polecili nigdy nie dotykasz FTM. Chociaż "Effective COM" to doskonała książka, uważam, że niektóre z jej zaleceń są otwarte na interpretację. Punkt 33 mówi "Uważaj na FTM"; nie mówi "Nigdy nie używaj FTM". Bardzo mądrze zaleca się zachować ostrożność, szczególnie gdy twój apartament-obiekt sprawuje odniesienia do innych obiektów, ponieważ mogą one nie być zwinne. Tak naprawdę poradą jest: należy uważnie zastanowić się podczas budowania obiektów zwinnych, niezależnie od tego, czy używają one FTM do osiągnięcia swojej zwinności. Jeśli jesteś pewien, że możesz zbudować obiekt zwinny, nie widzę powodu, dla którego nie używałbyś FTM, aby to osiągnąć.
@Quassnoi : Dzięki! – Aaron
Wymaga to interfejsu Marshalling. – Vinay