GC.Collect против Marshal.ReleaseComObject и RCW - PullRequest
3 голосов
/ 28 марта 2012

У меня есть ссылка на объект COM в моем C #, который иногда требует, чтобы меня отбросили, установив значение Null, а затем заново.Похоже, что происходит какое-то кэширование или что-то, что может привести к ошибке типа «COM-объект отделен от лежащего в его основе RCW».Я обошел это, заставив GC.Collect сразу после установки объекта в Null отказаться от RCW, но этот неуклюжий и неэффективный подход плох.

Я хотел использовать Marshal.ReleaseComObject, но это только уменьшает количество ссылок, и проблема остается до тех пор, пока GC фактически не запустится.(Не говоря уже о вызове, это вообще плохая идея)

Как я могу гарантировать, что при восстановлении ссылки COM я получу новый RCW, и все будет работать так, как должно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...