Выпустите COM-компоненты

В Unicode кодовые точки от U + D800 до U + DFFF называются суррогатами . Они зарезервированы для использования UTF-16 , и вы не можете использовать их для чего-либо еще.

Тип Rust char представляет собой абстрактную кодовую точку и не привязан к какому-либо конкретному кодированию, поэтому сохранение суррогата UTF-16 в char не имеет смысла.

5
задан Gulzar Nazim 11 October 2008 в 05:11
поделиться

7 ответов

С Microsoft Office, в целом, действительно необходимо явно выпустить ссылки, которые могут быть безопасно сделаны на двух этапах:

(1) Сначала выпустите весь незначительный объект, к которому Вы не держите переменную именованного объекта через вызов к GC.Collect () и затем GC.WaitForPendingFinalizers (). (Необходимо назвать это дважды, если включенные объекты могли бы иметь финализаторы, такой как тогда, когда с помощью Инструментов Visual Studio для Office (VSTO).)

(2) Затем явно выпустите объекты, к которым Вы держите именованную переменную через вызов в Маршалл. FinalReleaseComObject () на каждом объекте.

Именно. :-)

Я обсудил это более подробно в предыдущем сообщении, наряду с примером кода.

2
ответ дан 14 December 2019 в 09:05
поделиться

PIAs является.NET interop обертки. Это означает, что в деструкторе объекта (или Располагают - я не могу помнить), автоматически обработает его подсчет ссылок. Прием - то, что некоторые ссылки не будут выпущены, пока сборщик "мусора" не выполняется. Это зависит от того, чего инстанцирует COM-объект. Например, COM-объект, который открывает курсоры базы данных, поддержит те курсоры в памяти, пока подсчет ссылок на тех курсорах не будет выпущен. С.NET / ВЗАИМОДЕЙСТВУЮЩИЙ С COM, не выпущены ссылки, пока сборщик "мусора" не выполняется, или Вы явно выпускаете ссылку с помощью Маршала. ReleaseComObject (или FinalReleaseComObject).

Я лично не работал с PIAs Microsoft Office, но при большинстве обстоятельств, Вам не придется явно выпустить ссылки. Только, когда Ваше приложение начинает блокировать другие ресурсы или катастрофический отказ, необходимо начать быть подозрительными о повисших ссылках.

Править: При столкновении с ситуацией, где Вам действительно нужны к очистке объекты COM/Interop, используйте Маршала. FinalReleaseComObject - который берет подсчет ссылок полностью, чтобы обнулить вместо того, чтобы просто постепенно уменьшиться одним - и установить ссылку на объект в NULL. Можно явно вызвать сборку "мусора" (GC.Collect), если Вы действительно хотите быть в безопасности, но остерегаться выполнения GC слишком часто, поскольку это действительно вызывает значимый хит производительности.

2
ответ дан 14 December 2019 в 09:05
поделиться

Существуют некоторые хорошие методы здесь с помощью управляемой оболочки.. стоящий проверки..

1
ответ дан 14 December 2019 в 09:05
поделиться

Существует одно простое правило о .NET / ВЗАИМОДЕЙСТВУЮЩЕЕ С COM - Когда в сомнении, всегда Выпуск ().:-)

0
ответ дан 14 December 2019 в 09:05
поделиться

Действительно необходимо сделать так, если Вы хотите экземпляр Офисного приложения к выходу, как описано в этом сообщении.

И трудно разобраться в нем во всех кроме самых простых сценариев.

0
ответ дан 14 December 2019 в 09:05
поделиться

Возможно, это - просто мое суеверие, но я решил явно выпустить Office PIA через Маршала. ReleaseComObject (), потому что, когда мое разрушенное приложение, ссылки на Excel и Word оставалось открытым. Я не вырыл слишком глубоко в то, почему (глупые крайние сроки), но выпуск их как часть моего класса располагают шаблон, решил ту проблему.

0
ответ дан 14 December 2019 в 09:05
поделиться

Мой опыт показывает, что Вы имеете к, иначе (по крайней мере, Outlook), приложение не может закрыться вообще.

Но это открывает другую кучу проблем, поскольку похоже, что RCWs для каждого процесса, таким образом можно повредить некоторое другое дополнение, которое, оказывается, имеет ссылку на тот же объект.

Я отправил связанный вопрос здесь, но у меня все еще нет четкого ответа. Я отредактирую это сообщение, после того как я знаю больше.

0
ответ дан 14 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: